J'ai le tableau multidimensionnel suivant (ce n'est qu'un extrait) et je voudrais créer dynamiquement un ensemble de tableaux unidimensionnels et ajouter des valeurs.

Ce que j'ai:

0 => 
     0 => Image
     1 => DE
     2 => Hamburg-S02-I01
     3 => 54
     4 => Button
1 => 
     0 => Image
     1 => GB
     2 => London-S01-I01
     3 => 51
     4 => Button
2 => 
     0 => Image
     1 => GB
     2 => London-S01-I04
     3 => 60
     4 => Button
3 => 
     0 => Image
     1 => DE
     2 => Berlin-S02-I01
     3 => 57
     4 => Button
4 => 
     0 => Image
     1 => DE
     2 => Hamburg-S02-I01
     3 => 52
     4 => Button

Ce dont j'ai besoin:

$Hamburg = array('Hamburg-S02-I01', 'Hamburg-S02-I01');
$London= array('London-S01-I01', 'London-S01-I04');
$Berlin= array('Berlin-S02-I01');

J'apprécie ton aide! Merci!

0
khofm 25 juil. 2017 à 17:53

2 réponses

Essayez ceci ... $myarray est un tableau contenant votre exemple ci-dessus.

$cities = array();
foreach($myarray as $key => $val){
    unset($tmp);
    $tmp = explode("-",$val[2]);
    if(!is_array($cities[$tmp[0]])){
        $cities[$tmp[0]] = array();
    }
    array_push($cities[$tmp[0]], $val[2]);       
}

Je suis...

  • En boucle dans votre tableau d'origine.

  • Utilisation de la variable {{X 0}} pour séparer l'élément avec le nom de la ville.

  • En utilisant uniquement le nom de la ville, je teste si j'ai un nouvel élément de tableau avec ce nom.

  • Sinon, créez ce tableau à l'intérieur de $cities.

  • Dans tous les cas, insérez la chaîne de la ville dans le tableau de la ville.

0
JBH 25 juil. 2017 à 15:06

Quelque chose comme ça pourrait fonctionner:

$cities = array();
foreach($images as $image) {
    $parts = explode('-',$image[2]);
    $city = $parts[0];
    if(!isset($cities[$city])) $cities[$city] = array();
    $cities[$city][] = $image[2];
}
1
Adder 26 juil. 2017 à 07:44