Utilisation de la fonction unserialize

Utilisation de la fonction unserialize - PHP - Programmation

Marsh Posté le 30-03-2009 à 18:49:46    

Bonsoir , tout le monde
je sérialise et j'obtiens un tableau sérialise et voici son contenu :
a:2:{s:1:"1";s:0:"";s:3:"elt";s:6:"valeur";}
 
tel que je sauvegarde cette valeur dans une variable en PHP
$tab='a:2:{s:1:"1";s:0:"";s:3:"elt";s:6:"valeur";}';
 
et après je veux transformer cette variable à une table normale
et j'ai fait ça :' .
foreach($tab as $key=>$val)
{
$toto = unserialize($key);
echo "\$toto : $toto<br/>";
}  
Mais voici le message d'erreur :
Invalid argument supplied for foreach()
Comment je peux résoudre ce prb ; sachant que je veux obtenir un tabaleau normal comme rèsultat

Reply

Marsh Posté le 30-03-2009 à 18:49:46   

Reply

Marsh Posté le 30-03-2009 à 18:56:10    

tu vas poser les questions dans ton topic au lieu d'en créer un à chaque fois ?
Et puis on t'as donnée la réponse plusieurs fois déjà... Seulement tu n'as pas du prendre la peine de réfléchir/lire la doc sinon tu aurais déjà trouvé...

Reply

Marsh Posté le 30-03-2009 à 18:56:41    

bon désolé si je m'énerve mais quand on aide sur des forums et que les gens ne prennent pas la peine de nous lire, c'est désagréable.

Reply

Marsh Posté le 30-03-2009 à 19:19:37    

Mais non
Moi au debut je ne sais pas c'est quoi serialisè un tableau et c'est vous qui m'avez aidèe mais mnt je sais le rôle de cahque fonction
Mais j ai un prb au niveau de code PHP
est ce que je n'ai pas bien affectè la valeur bien ou bien quoi

 

c'est pour cela pour moi ça est un autre prb


Message édité par sonia5 le 30-03-2009 à 19:21:05
Reply

Marsh Posté le 30-03-2009 à 19:34:31    

Non, tu n'as pas bien compris car la tu essaye de boucler sur le résultat d'une serialisation (une string).
 
Un foreach se fait sur un array donc tu dois unserialize la string avant ...
 
Désolé mais après 3 topics quand même ...

Reply

Marsh Posté le 30-03-2009 à 19:36:53    

j essaye ça avant mais ne m'arche pas pr moi
 
foreach(unserialize($tab1) as $key=>$val)
{
$toto = $key;
echo "\$toto : $toto<br/>";
}
il m affiche même erreur
Et pardon à ts la prochaine fois je vais rester sur même topic ok
Sachant que avant je veux afficher le tableau et j'ai fait comme ça
print_r(unserialize($tab1)) mais il ne m affiche rien donc mon traitement pas valide


Message édité par sonia5 le 30-03-2009 à 19:42:29
Reply

Marsh Posté le 30-03-2009 à 19:38:08    

Donnes le code intégrale parce que jusqu'ici il était question de $tab pas de $tab1

Reply

Marsh Posté le 30-03-2009 à 19:46:47    

ce qui concerne $tab1 c'est un erreur de tape
Voici mon code
<?php
a:2:{s:1:"1";s:0:"";s:3:"elt";s:6:"valeur";}
$tab='a:2:{s:1:"1";s:0:"";s:3:"elt";s:6:"valeur";}';
 
foreach(unserialize($tab) as $key=>$val)
{
$toto = $key;
echo "\$toto : $toto<br/>";
}  
//autre solution
$tab1=unserialize($tab);
print_r($tab1[1]); //aucun resultat
?>

Reply

Marsh Posté le 30-03-2009 à 19:58:47    

ça m'etonnerai que ça soit ton code, sinon tu as un parse error ligne 2 ...
 
Edit au passage $tab1[1] renverra vide car dans ton serialize tu cree $tab[1] = ""; donc c'est un peu normal ... ' s:1:"1";s:0:"" '


Message édité par yellu le 30-03-2009 à 20:04:01
Reply

Marsh Posté le 30-03-2009 à 20:28:55    

Mais j ai meme prb malgrè je tape  
$tab1=unserialize($tab);
print_r($tab1[elt]); //aucun resultat  
Moi je veux seulement te montrer un exemple
donc $tab1 est vide
et aussi j ai des erreur au niveau de foreach
Est ce que mon code est mal utilisè la fonction unserialize
 

Reply

Marsh Posté le 30-03-2009 à 20:28:55   

Reply

Marsh Posté le 30-03-2009 à 20:49:40    

$tab1[elt] ça cherche un index du tableau qui a pour valeur la constante elt, ce n'est pas l'index "elt"

Reply

Marsh Posté le 30-03-2009 à 21:50:17    

Merci pour vos rèponses
Mais Moi j'essaye ts tel que j utilse $tab1["elt"] ça marche pas et aussi $tab1['elt']
Mais rien à m afficher  
Je pense que le problème existe au niveau de ça :$tab1=unserialize($tab);  
tel que qd je veux afficher $tab1 il ne me donne rien et aussi au niveau de  
 
foreach(unserialize($tab) as $key=>$val)
{
$toto = $key;
echo "\$toto : $toto<br/>";
}    
J'ai un prb => erreur
Invalid argument supplied for foreach()  
donc le prb que unserialize($tab)  ça marche pas chez moi??????????????

Reply

Marsh Posté le 31-03-2009 à 09:52:55    

t'as quel version de php ? ton code marche tres bien chez moi


Message édité par stealth35 le 31-03-2009 à 10:04:57
Reply

Marsh Posté le 31-03-2009 à 09:59:10    

ta chaine serialisée doit ressembler a ca

 

a:4:{i:0;s:1:"1";i:1;s:0:"";i:2;s:3:"elt";i:3;s:6:"valeur";}

 

ou a ca

 

a:2:{i:1;s:0:"";s:3:"elt";s:6:"valeur";}


Message édité par stealth35 le 31-03-2009 à 10:05:13
Reply

Marsh Posté le 31-03-2009 à 12:31:41    

Merci bcp pour votre rèponse
Je travaille avec PHP4
Mnt ça marche chez moi car le prb sera ça :
a:2:{i:1;s:0:"";s:3:"elt";s:6:"valeur";}  
Merci bcp bcp à vos aides

Reply

Marsh Posté le 31-03-2009 à 14:28:16    

Mais oublie un peu ce que contient la variable après sérialisation ! Dans l'absolu, tu t'en tappes complètement, d'ailleurs, c'est susceptible de changer d'une implémentation de php à l'autre !
 

Code :
  1. $montab = array(1, 2, 3);
  2. $montabs = serialize($montab);
  3.  
  4. //puis, plus tard, pour retrouver le tableau d'origine
  5. $montab = unserialize($montabs);
  6.  
  7. //à partir de maintenant, montab est un tableau tout à fait normal, qui contient :
  8. //$montab[0] = 1;
  9. //$montab[1] = 2;
  10. //$montab[2] = 3;


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 31-03-2009 à 19:43:28    

D accord merci bcp

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed