[RESOLU] multidimensional array

lugdanumm
Invité n'ayant pas de compte PHPfrance

15 janv. 2020, 00:26

Bonjour tout le monde

Je bloque depuis 2 jours sur un trucs que je n'arrive pas assimiler, du coup je vous demande une petite aide.
$data = array();

//Début de la boucle ici
foreach ($iterator as $file) {.........
//Récupère les mots qui sont dans des lignes dans un fichier comme par exemple
$ListeMots = "mot0|mot1|mot2|mot3|mot4|mot5|mot6|mot7";

//$ListeMots = Array ( [0] => mot0 [1] => mot1 [2] => mot2 [3] => mot3 [4] => mot4 [5] => mot5 [6] => mot6 [7] => mot7)

//On sépare les mots pour les tester un par un...
foreach ($ListeMots as $MotTag) {

                //Le mot est déjà présent dans le tableau, du coup on incrémente le nbdefois qu'il apparait en le modifiant
                if (array_search($MotTag, array_column($data, 'MotTag')) !== FALSE)
                { 
                        echo $MotTag.' trouvé<br>';
                        $data[$MotTag]["NBdeFois"]=$data[$MotTag]["NBdeFois"]+1; //Là je sais pas, j'ai essayé pleins de trucs
                 }
                 else //il n'apparait pas dans le tableau, on va le créer
                {
                        echo $MotTag.' pas trouvé<br>';
                        $data[] = array('MotTag' => $MotTag, 'NBdeFois' => 1 );//on l'ajoute en commençant à compter son nombre d'apparition à 1
                }         
                
 }
En fait j'aimerais pouvoir récupérer les mots puis :
-> Si mot pas apparu (pas dans le tableau) on l'ajoute au tableau en indiquant du style MOT1->1
-> Si le mot es déjà dans le tableau, on incrément mais ne l'ajoute pas : MOT1->2

Je sais pas si je suis clair mais en tout cas je vous remercie d'avance pour votre coup de main. :pouce:

Mammouth du PHP | 2703 Messages

15 janv. 2020, 00:41

ajoute un
echo "<pre>";
print_r($data);
echo "</pre>";
pour voir le format de ce tableau et comprendre qu'il faut utiliser le résultat d'array_search

si le nombre d’occurrence est la seule donnée associée à l'index, la structure est inutilement compliquée.

Avatar du membre
Mammouth du PHP | 1609 Messages

15 janv. 2020, 14:14

Salut, ça pourra peut être t'aider dans ton raisonnement :
$words = ['voiture', 'camion', 'bicyclette', 'camion'];
$count = [];

foreach ($words as $word) {
  if (!isset($count[$word]))
    $count[$word] = 0;

  $count[$word]++;
}

print_r($count);
/*
Array
(
  [voiture] => 1
  [camion] => 2
  [bicyclette] => 1
)
*/
Développeur web depuis + de 20 ans

Eléphant du PHP | 63 Messages

15 janv. 2020, 16:31


lugdanumm
Invité n'ayant pas de compte PHPfrance

15 janv. 2020, 18:54

Quel abruti !! :?

Merci à vous tous pour votre aide ! :agenouille:

Bonne fin de journée