J'ai quelques clés de tableau php qui sont remplies avec beaucoup de caractères étranges.
Est-ce permis? Y a-t-il des contraintes à ce que je ne peux pas utiliser?
J'ai quelques clés de tableau php qui sont remplies avec beaucoup de caractères étranges.
Est-ce permis? Y a-t-il des contraintes à ce que je ne peux pas utiliser?
Selon le manuel:
La clé peut être un entier ou une chaîne de caractères. La valeur peut être de n'importe quel type.
En outre, les clés suivants jette:
- Les chaînes contenant un entier valide sera lancé pour le type integer. E. g. la touche "8" seront effectivement stockées sous 8. Sur l'autre main "08" ne soient pas jetés, car elle n'est pas valide d'un nombre décimal.
- Les flotteurs sont également exprimés en nombres entiers, ce qui signifie que la partie fractionnaire sera tronqué. E. g. la clé de 8,7 sera effectivement stockées sous 8.
- Bool sont exprimés en nombres entiers, trop, c'est à dire la clé de la vraie seront effectivement stockées sous 1 et la clé de faux-dessous de 0.
- Null sera jeté à la chaîne vide, c'est à dire la clé null sera effectivement stockées sous "".
- Les tableaux et les objets ne peuvent pas être utilisés comme clés. Ce faisant, il recevra un avertissement: Illégal type de décalage.
Le manuel de nouveau:
Une chaîne est une suite de caractères, où un personnage est le même que d'un octet. Cela signifie que PHP ne supporte que 256-jeu de caractères, et donc n'offre pas natif de l'Unicode. Voir les détails du type chaîne de caractères.
Donc, en bref, n'importe quelle chaîne peut être une clé. Et une chaîne de caractères peut contenir des données binaires (jusqu'à 2 go). Par conséquent, une clé peut être des données binaires (depuis une chaîne de caractères peut être des données binaires).
Certains aléatoire (valide) les abus de la matrice de touches:
$w = array(chr(0) => 'null byte?', chr(rand(0, 255)) => 'random byte?');
var_dump($w);
La clé doit être une chaîne ou un entier. Il y a quelques moulages qui prennent de la place, mais je pense que le manuel fait un bon travail en expliquant:
La clé peut être un entier ou une chaîne de caractères. La valeur peut être de n'importe quel type.
En outre, les clés suivants jette:
- Les chaînes contenant un entier valide sera lancé pour le type integer. E. g. la touche "8" seront effectivement stockées sous 8. Sur l'autre la main "08" ne soient pas jetés, car elle n'est pas valide d'un nombre décimal.
- Les flotteurs sont également exprimés en nombres entiers, ce qui signifie que la partie fractionnaire sera tronqué. E. g. la clé de 8,7 sera effectivement stockées sous 8.
- Bool sont exprimés en nombres entiers, trop, c'est à dire la clé de la vraie seront effectivement stockées sous 1 et la clé de faux-dessous de 0.
- Null sera jeté à la chaîne vide, c'est à dire la clé null sera effectivement stockées sous "".
- Les tableaux et les objets ne peuvent pas être utilisés comme clés. Ce faisant, il recevra un avertissement: Illégal type de décalage.
J'ai trouvé cette réponse à la recherche de plus d'informations sur un problème que j'ai eu. J'utilisais des chaînes contenant des caractères UTF-8, ce qui ne fonctionnerait pas comme clé d'un tableau que j'avais.
Quelque chose comme
$str = "R&D - Solution";
$arr = array( "R&D - Solution" => "Research" );
echo $arr[$str]; // did not work
La solution (ni grande ni intelligente) pour moi était de le faire ..
$str = md5("R&D - Solution");
$arr = array( md5("R&D - Solution") => "Research" );
echo $arr[$str]; // works!
Les clés de tableau PHP peuvent être des entiers ou des chaînes. Les chaînes PHP sont des tableaux d'octets, c'est-à-dire des séquences d'octets. Il n'y a pas d'autres types de chaînes et PHP n'impose pas de restrictions particulières aux chaînes de clés de tableaux. En d'autres termes: tant que c'est une chaîne, tout est permis.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.