71 votes

Convertir un tableau multidimensionnel en un seul tableau

J'ai un tableau qui est multidimensionnel sans raison

 /* This is how my array is currently */
Array
(
[0] => Array
    (
        [0] => Array
            (
                [plan] => basic
            )

        [1] => Array
            (
                [plan] => small
            )

        [2] => Array
            (
                [plan] => novice
            )

        [3] => Array
            (
                [plan] => professional
            )

        [4] => Array
            (
                [plan] => master
            )

        [5] => Array
            (
                [plan] => promo
            )

        [6] => Array
            (
                [plan] => newplan
            )

    )

 )

Je veux convertir ce tableau sous cette forme

 /*Now, I want to simply it down to this*/
Array (
[0] => basic
[1] => small
[2] => novice
[3] => professional
[4] => master
[5] => promo
[6] => newplan
)

Une idée de comment faire cela ?

134voto

Usman Ahmed Points 1878

Cette seule ligne ferait ça :

 $array = array_column($array, 'plan');

Le premier argument est un tableau | Le deuxième argument est une clé de tableau.

Pour plus de détails, rendez-vous sur la documentation officielle : https://www.php.net/manual/en/function.array-column.php .

114voto

AlienWebguy Points 42370

En supposant que ce tableau soit ou non imbriqué de manière redondante et que vous n'êtes pas sûr de sa profondeur, cela devrait l'aplatir pour vous :

 function array_flatten($array) { 
  if (!is_array($array)) { 
    return FALSE; 
  } 
  $result = array(); 
  foreach ($array as $key => $value) { 
    if (is_array($value)) { 
      $result = array_merge($result, array_flatten($value)); 
    } 
    else { 
      $result[$key] = $value; 
    } 
  } 
  return $result; 
} 

30voto

wellsantos Points 316

Si vous rencontrez un tableau multidimensionnel constitué de données pures, comme celui-ci ci-dessous, vous pouvez utiliser un seul appel à array_merge() pour effectuer le travail via la réflexion :

 $arrayMult = [ ['a','b'] , ['c', 'd'] ];
$arraySingle = call_user_func_array('array_merge', $arrayMult);
// $arraySingle is now = ['a','b', 'c', 'd'];

15voto

Paulpro Points 54844

Affectez-le simplement à son propre premier élément :

 $array = $array[0];

8voto

vikas Points 81
 $singleArray = array();

    foreach ($multiDimensionalArray as $key => $value){
        $singleArray[$key] = $value['plan'];
    }

c'est le meilleur moyen de créer un tableau à partir d'un tableau multiDimensionalArray.

Merci

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X