2013-06-27 3 views
2

je dois encoder un tableau similaire:json_encode tableau avec un indice int

Array 
(
    [0] => 393922111111 
    [1] => 393433333333 
    [2] => 393555555555 
) 

avec json_encode.

Je reçois ceci:

["393922111111","393433333333","393555555555"] 

qui ne semble pas correct. I.e. je l'ai mis dans un

echo '<input type="hidden" id="destinatariSMS" name="destinatariSMS" value="'; 
    echo json_encode($destinatariSMS); 
echo '" />'.PHP_EOL; 

et dans la page suivante 'ne recevra que la première tranche.

Pourriez-vous me donner un indice? Je vous remercie!

+0

Indice: utilisez 'intval()' pour les forcer à un entier au lieu d'une chaîne. – Pitchinnate

+0

Ces nombres dépassent la limite entière de 32bit en PHP 32bit, ainsi ils DOIVENT être encodés en tant que chaînes. –

+0

Ou utilisez simplement des guillemets simples pour votre 'value = ''', de sorte que vous n'ayez pas de guillemets doubles entre guillemets. – Pitchinnate

Répondre

2

Vous faites une erreur élémentaire en n'échappant pas correctement votre json encodé avant de le mettre comme valeur INPUT. Certains caractères, y compris " doivent être cités (" =>&quot;) pour "travailler" avec HTML. Donc le code doit être:

echo '<input type="hidden" id="destinatariSMS" name="destinatariSMS" value="'; 
echo htmlspecialchars(json_encode($destinatariSMS)); 
echo '" />'.PHP_EOL; 
+0

Merci. Après plusieurs heures ... je fais cette erreur terrible. Je vous remercie! – sineverba

0

Lorsque vous exportez au format html, vous devez utiliser htmlspecialchars pour encoder votre sortie afin qu'il ne peut pas briser le code html:

echo '<input type="hidden" id="destinatariSMS" name="destinatariSMS" value="'; 
    echo htmlspecialchars(json_encode($destinatariSMS)); 
echo '" />'.PHP_EOL; 

Dans votre cas, les citations dans votre JSON fermer l'attribut value.

Questions connexes