8
votes

Pourquoi ne puis-je pas définir zéro comme première clé de la matrice?

Le résultat de ce code: xxx

est: xxx

pouvez-vous remarquer comment il saute le premier numéro, qui est zéro ? La question est la suivante: pourquoi?


4 commentaires

Quelle version de php utilisez-vous?


Je suis capable de reproduire ceci sur 5.3.0. Le problème réside avec json_encode - print_r'ing the $ a une matrice de $ une matrice indique qu'il est indexé correctement.


Hmmm. Je peux reproduire cela, sur PHP 5.1.6. Googling semble ne rien produire, cela dit qu'il n'y a pas de terme de recherche simple. +1.


Vous êtes sur PHP 5.1.6! ??! Sainte Crap Mettez à jour votre serveur!


3 Réponses :


0
votes

Vous n'avez pas indexé votre tableau xxx

** Modifier: ** sur mon ordinateur portable si je fais un print_r ($ a); Je reçois ce tableau: qui définit zéro xxx


1 commentaires

Techniquement ne devrait pas être nécessaire. La syntaxe [] est censée incrémenter automatiquement l'index (à partir de 0, évidemment). Le vôtre ne fonctionnerait pas comme vous le souhaitez si $ A a déjà des objets et que sa boucle ne leur ajoute simplement.



2
votes

Vous voulez JSON_ENCODE ($ A, JSON_FORCE_OBJECT). Malheureusement, il est ajouté seulement en 5.3.


3 commentaires

En outre, voici un cas de test plus simple: php -r 'var_dump (json_encode (tableau (tableau (0 => 0), matrice (1 => 1))); chaîne (13) "[[0], {" 1 ": 1}]"


Je ne peux même pas le tester car Rackspace Cloud Sites est bloqué @ 5.2.6. Je vais essayer de travailler autour de cette question JSON_ENCODE.


Bon, j'ai réussi à utiliser json_encode correctement à partir d'un objet au lieu d'un tableau. Le problème est qu'il délivre des chaînes partout et non des entiers comme si j'aurais besoin dans certains cas, mais je vais m'occuper de cela plus tard. Merci!



0
votes

C'est un hack mais vous pouvez préparer un élément factice.

$a = array('dummy'=>1);
for($i = 0; $i <= 7; $i++) {
  ...


0 commentaires