Explode() sans explode()
Résolu
anthonyr_25
Messages postés
172
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je recode la function explode() sans utilisé de "built function".
J'arrive à stocker les valeurs une par une mais je n'arrive pas à stocker toutes les valeurs précédentes de mon indicateur
Par exemple j'aimerais stocker tout les mots mais je stock uniquement la dernière lettre
Egalement je n'arrive pas à atteindre la fin de la chaine pour l'exemple c'est le "i".
resultat : uaat
J'aimerais réussir à stocker toutes les valeurs précédent mon indicateur ainsi que la dernière valeurs, pourriez-vous m'aider ?
Je recode la function explode() sans utilisé de "built function".
J'arrive à stocker les valeurs une par une mais je n'arrive pas à stocker toutes les valeurs précédentes de mon indicateur
Par exemple j'aimerais stocker tout les mots mais je stock uniquement la dernière lettre
Egalement je n'arrive pas à atteindre la fin de la chaine pour l'exemple c'est le "i".
function fn_explode($ex, $var){
$array = "";
for ($i=0; $i < strlen($var); $i++) {
if($var[$i] == $ex){
$array .= $var[$i-1];
}
}
return $array;
}
$tab = "coucou: sa: va: et: toi";
echo fn_explode(":", $tab);
resultat : uaat
J'aimerais réussir à stocker toutes les valeurs précédent mon indicateur ainsi que la dernière valeurs, pourriez-vous m'aider ?
Configuration: Windows / Chrome 100.0.4896.127
3 réponses
-
Bonjour,
Je n'ai pas compris ce que tu veux réellement faire...
La fonction explode ne donne pas qu'un seul caractère avant le séparateur... il découpe la chaine en array, chaque entrée de cet array étant l'ensemble des caractères ...
En gros
avec ton :$tab = "coucou: ça: va: et: toi";
ça donneArray( 0=>"coucou" 1 => "ça" 2 => "va" 3 => "et" 4 => "toi" )
Tu dois donc concaténer toutes les valeurs jusqu'à tomber sur ton caractère séparateur, puis stocker dans un array..
et ainsi de suite sur toute la longueur de la chaine
Au passage, pour aller jusqu'au bout de la chaine, tu peux utiliser <= au lieu de juste < dans ton for.
-
-
-
oui excuse moi pour l'orthographe ^^
Avec des phrase j'aimerais :
- parcourir la chaine
- si la valeur correspond à mon séparateur
- alors ajouter les valeurs précédentes dans le premiere index de ma variable array
- puis continuer à parcourir ma chaine
- si je tombe encore sur mon séparateur ajouter les valeurs précédentes avant le premier séparateur dans le deuxième index de mon tableau
- etc ..
- si il n'y as plus de séparateur ajouter les valeurs précédentes dans le dernière index du tableau
- puis retourner le tableau -
Tu ne vois pas bien le fonctionnement.
Tu ne dois pas attendre de trouver le séparateur pour récupérer le contenu ...
Tu dois parcourir la chaine
A chaque tour de boucle, stocker (concaténer en string ) les valeurs dans une variable
Dès que tu tombes sur un séparateur, mettre la valeur concaténée dans un array, vider la variable concaténer et poursuivre jusqu'au prochain séparateur et/ou la fin de la chaine.
et enfin, retourner l'array. -
-
-
C'est bon :
/* explode — Scinde une chaîne de caractères en segments */ function fn_explode($ex, $var){ $array = []; $index = ""; for ($i=0; $i <= strlen($var); $i++) { if($var[$i] == $ex){ echo $index; $array[] .= $index; $index = ""; } else { $index .= $var[$i]; } } $array[] = $index; return print_r($array); } $tab = "coucou: ça: va: et: toi"; echo fn_explode(":", $tab); -
Tu sais qu'avec un IF il existe aussi un else ?