Renommer array après avoir effectué un explode de explode

Résolu/Fermé
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021 - 14 déc. 2017 à 23:43
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 15 déc. 2017 à 07:53
Bonjour,

Je ne peux pas dire "tout est dit dans le sujet" car c'est incompréhensible en l'état :-)

Je souhaiterais manipuler des données de manière plus aisée, afin de les récupérer ensuite. Voici ce que j'ai sous forme de texte (nom court=nom long=répertoire)
$vartxt = "10B=10ème Section B=13
10C=10ème Section C=14
10G=10ème Section G=15
11A=11ème Section A=20
11B=11ème Section B=21";

Je crée d'abord un array afin de séparer chaque ligne car chacune représente un élément différent :
$classes = explode("\r\n",$vartxt);

Ensuite j'aimerais extraire chaque élément de chaque ligne, je fais donc encore une fois :
$iclass = 0;
do {
$classinfos[] = explode("=",$classes[$iclass]);
$iclass++;
}
while(!empty($classes[$iclass]));


Super, ça fonctionne. Mais voilà, maintenant je souhaite travailler sur la ligne de l'élément 10G en l'appelant par son nom court ou par son répertoire par exemple, et non pas par son numéro de array (qui est définit par PHP selon l'ordre dans lequel il apparaît et qui ne me parle pas au moment où je veux récupérer l'information).

EXEMPLE :
Je veux connaître le numéro du répertoire de 10G (ou son nom complet). Comment je peux atteindre ces informations avec les arrays que je viens de créer ?
La ligne correspond à $classinfos[2], et le numéro du répertoire serait $classinfos[2][2], mais moi je souhaite connaître l'information à partir d'une demande formulée comme "Dis-moi quel est le répertoire de la classe 10G".

J'espère que ma question est assez claire pour être répondue :-)

D'ores et déjà merci d'avoir pour votre aide !

Raph
A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
14 déc. 2017 à 23:49
Bonjour,

Rien de plus simple :

$vartxt = "10B=10ème Section B=13
10C=10ème Section C=14
10G=10ème Section G=15
11A=11ème Section A=20
11B=11ème Section B=21";

$classes = explode("\r\n",$vartxt);

$arrayFinal = array();
foreach($classes as $V){
  $arrV = explode('=',$V);
  $arrayFinal[$arrV[0]] = $arrV;
}

echo "<pre>";
  print_r($arrayFinal);
echo "</pre>";

echo "10G =><br>";
print_r($arrayFinal['10G']);

0
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021
Modifié le 15 déc. 2017 à 00:05
Salut Jordane,

Merci pour ta réponse rapide.
Je ne suis pas sûr de bien comprendre... comment par exemple trouverais-tu le nom complet de la classe 10G sur une URL telle que fichier.php?classe=10G

$classe = $_GET['classe'];
$nomcomplet = $arrayFinal[$classe[1]]; // Cette ligne ne marche pas


Merci pour ton aide.

Raph
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
15 déc. 2017 à 00:06
As tu au moins pris la peine de tester le code que je t'ai donné ?
Si tu l'avais fait, je pense que tu ne m'aurais pas posé la question... les divers print que j'y ai placé te montrant à quoi ressemble l'array final et l'exemple que je te donne répond à ta nouvelle question...

Mais pour y répondre :
//récupération PROPRE d'une variable GET avant de l'utiliser :
$classe = !empty($_GET['classe']) ? $_GET['classe'] : NULL;

//si la variable existe et n'est pas vide ...
if($classe){
    //récupération du nom complet
   $nomcomplet = !empty($arrayFinal[$classe]) ? $arrayFinal[$classe][1] : NULL;
    echo $nomcomplet ;
}
0
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021
15 déc. 2017 à 00:07
Attends attends... j'avais fait une faute de frappe, j'avais inclu un [ ] dans un autre [ ] au lieu de faire [ ] [ ]
Donc là d'après les premiers tests, ÇA MARCHE !
Je te remercie d'avoir lu, compris et répondu à ma question ! :-) Et bravo.

Raph
0
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021
15 déc. 2017 à 00:45
Encore une question :
Est-ce irréversible ?
Si je veux utiliser les deux systèmes ensemble, on dirait que ça ne fonctionne pas :
Exemple :
// $totalclasses a été compté plus haut avec array_count();
$iclass = 0;
do {
	echo $$arrayFinal[$iclass][0]." a comme nom complet ".$$arrayFinal[$iclass][1]." et est sauvegardé dans le répertoire ".$$arrayFinal[$iclass][2];
	$iclass++;
}
while($iclass < $totalclasses);

Je n'obtiens que des valeurs vides.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
15 déc. 2017 à 07:53
Un $ en trop
$class et non $iclass
0