SommaireTelecharger la documentationChapitre suivantChapitre precedent  

 
Raccourci :  
Les types

Introduction
Booléens
Conversion en booléen
Entiers
Dépassement de capacité des entiers
Conversion en entiers
Depuis un booléen
Depuis un nombre à virgule flottante
From strings
Conversion d'autres types

Les nombres à virgule flottante
Les chaînes de caractères
Syntax
guillemets simples
Guillemets doubles
Syntaxe Heredoc
Traitement des variables dans les chaînes
Syntaxe simple
Syntaxe complexe
Accès aux caractères d'une chaîne
Fonctions et opérateurs pratiques
Conversion de type
Les tableaux
Syntaxe
Créer un tableau array()
Omettre des clés
La syntaxe à crochets
Fonctions pratiques
Exemples
Attention aux tableaux
Pourquoi est ce que $foo[bar] est invalide?
Alors, pourquoi est-ce mal?

Les objets
Initialisation d'un objet
Ressources
Libérer des ressources
La valeur NULL
Syntaxe
Définition du type
Transtypage

7.9.6.4. Pourquoi est ce que $foo[bar] est invalide?
[Notes en ligne] 

Dans vos vieux scripts, vous pouvez avoir utilisé la syntaxe suivante :

<?php
  $foo[bar] = 'ennemi';
  echo $foo[bar];
?>
       

Cela est mauvais, mais ca marche. Pourquoi est-ce mauvais? La raison est que PHP réclame une expression entre les crochets (comme indiqué dans la section sur la syntaxe des tableaux). Cela signifie que vous pouvez écrire quelque chose comme :

<?php
  echo $arr[ foo(true) ];
?>
       

Ceci est un exemple d'utilisation de retour de fonction dans un index de tableau. PHP reconnait aussi les constantes, et vous pouvez avoir déjà rencontré E_*.

<?php
  $error_descriptions[E_ERROR] = "Une erreur fatale est survenue";
  $error_descriptions[E_WARNING] = "PHP a généré une alerte";
  $error_descriptions[E_NOTICE] = "Ceci est juste une note grâcieuse";
?>
       

Notez que E_ERROR est aussi un identifiant vlaide, tout comme bar dans le premier exemple. Mais le dernier exemple revient à écrire :

<?php
  $error_descriptions[1] = "Une erreur fatale est survenue";
  $error_descriptions[2] = "PHP a généré une alerte";
  $error_descriptions[8] = "Ceci est juste une note grâcieuse";
?>
       

car E_ERROR égale 1, etc.
Alors, comment se fait-tile que $foo[bar] fonctionne? C'est parce que bar est attendu comme une constante. Cependant, dans ce cas, aucune constante n'a pour nom bar. PHP suppose alors que vous voulez dire bar littéralement, c'est-à-dire la chaîne "bar", mais que vous avez oublié les guillements.


Chapitre précédentChapitre suivantAccueil nexen.net