PHP - chaine + split

Résolu/Fermé
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 - 14 oct. 2009 à 15:25
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 - 15 oct. 2009 à 10:44
Bonjour,

J'ai un petit problème a l'utilisation de split :

j'ai une chaine type : $chaine="toto 2 tata, tutu 1 test,"

Je souhaite récuperer chaque mot ou nombre séparemant je comment :

//Traitement des statisques des joueur
$string = split(',', $chaine); 
$taille=sizeof($string);
$i="1";
while( $i < $taille ) {
	$stat=$string["$i"];
	$chaine = split(' ', $stats); 
	$a=$chaine[1];
	$b=$chaine[2];
	$c=$chaine[3];
}


Mon premier split sépare bien les expresion a chaque "," mais le seconde ne marche pas du tout j'ai voulou utilisé str_replace croyant que cela venait des espace mais pas mieux mon tableau contient aucune donné.

Avez vous une idée ?

Merci
A voir également:

11 réponses

biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
14 oct. 2009 à 15:52
Enlève les guillemets avec ton $i="1", même si le php est un langage très peu typé..
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
14 oct. 2009 à 15:58
Hello,
j'ai envie de dire que c'est une bête faute de frappe, mais ça va peut-être plus loin :P

-> Je ne comprends pas à quoi sert ton while. Il manque une instruction pour modifier $i ? Dans ce cas, une boucle for ne serait-elle pas plus adaptée ?

-> Tu réutilises la variable $chaine. Ce n'est pas une erreur, mais une belle source de confusions. Surtout quand tu reprends ton code après quelques jours de pause ! On n'est vraiment pas à une variable près, autant bien clarifier les choses.

-> Que vois-je ici ? o_O
	$stat=$string["$i"];
	$chaine = split(' ', $stats);
	                          ^
Bref, voilà ;)
0
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 5
14 oct. 2009 à 16:16
Effectivement je suis tromper en ré-écrivant mon code mais ma source est bonne ;-) (le nom de variable stat et le $i++ pour le while)

j'ai le message suivante en faite :

Notice: Undefined offset: 1 in line 42

Notice: Undefined offset: 2 in line 43

Notice: Undefined offset: 3 in line 44

ce qui correspond a mes :
$a=$chaine[1];
$b=$chaine[2];
$c=$chaine[3];

J'ai enlever les guillemets sans succès.

J'ai l'impression que le problème viens de la boucle, je réutilise la même variable $chaine car les action après son lié insertion en bdd, j'ai pas penser faire autrement pour être franc :-)
0
biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
14 oct. 2009 à 16:18
Mettre $i="1", puis mettre $i++..
Je comprends bien qu'il s'agit du php.. mais au secours pas ce genre de choses quoi!! :D
0
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 5
14 oct. 2009 à 16:22
salut biboo_,

Je suis débutant et je fais plein d'erreur et surement des usine a gaz pour rien mais que me propose tu ?

a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
14 oct. 2009 à 16:24
Non c'est pas mal, c'est juste certaines pratiques à.. régulariser. :)
Genre si tu fais $i++, $i est un entier, donc déclare-le en entier et non en String. ;)
0
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 5
14 oct. 2009 à 16:29
Oki je corrige ce point, j'avais pas fait attention ;-), je viens de faire un test sans faire une boucle sur un seul cas et ça marche est-il déconseiller d'utiliser split dans une boucle ?
0
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 5
14 oct. 2009 à 16:37
Je viens de test avec une boucle for et toujours pas mieux :

$string = split(',', $chaine); 
$taille=sizeof($string);

for($i=0;$i < $taille;$i++) {
	$stat=$string["$i"];
	$chaine = split(' ', $stats); 
	$a=$chaine[1];
	$b=$chaine[2];
	$c=$chaine[3];
}
0
biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
14 oct. 2009 à 16:41
Essaie ça :
$string = split(',', $chaine); 
$taille=sizeof($string);
$chaine = array();
for($i=0;$i < $taille;$i++) {
	$stat=$string[$i];
	$chaine = split(' ', $stats); 
	$a=$chaine[1];
	$b=$chaine[2];
	$c=$chaine[3];

}


Tu en fais quoi de tes variables $a $b $c après?
0
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 5
14 oct. 2009 à 16:50
Il y a du mieux au niveau boucle je vois apparaitre chaque traitement qui est fait par contre toujours la même erreur sur le deuxième split ma chaine est vide

quand je vais un echo de $chaine j'ai "Array".
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
14 oct. 2009 à 19:03
Re !
(http://fr2.php.net/manual/fr/function.split.php)
Split appelle un moteur de regexp pour faire son traitement, tu n’en as pas besoin ici. Essaye plutôt explode.
Et pour le code, j’avais pas trop le temps tout à l’heure mais je reviens à la charge avec cette version :

$string = explode(',', $chaine); 
$taille = sizeof($string);
for ($i=0; $i<$taille; $i++) {
	$stat = $string[$i];
	$mots = explode(' ', $stat);		// nouvelle variable
	$a = $mots[0];		// le 1er index d’un tableau est 0 !
	$b = $mots[1];
	$c = $mots[2];
	/*
	 * traitement de $a, $b et $c
	 * …
	 */
}
0
wapette21 Messages postés 66 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 7 octobre 2010 5
15 oct. 2009 à 10:44
Salut a vous,

Super le explode de Groarh, marche très bien, problème résolue.

Merci a vous tous.

a++
0