Convertir una matriz multidimensional en una matriz única [duplicado]

Resuelto CuriousMind asked hace 54 años • 24 respuestas

Tengo una matriz que es multidimensional sin ningún motivo.

/* 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
            )

    )

 )

Quiero convertir esta matriz en esta forma

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

¿Alguna idea de cómo hacer esto?

CuriousMind avatar Jan 01 '70 08:01 CuriousMind
Aceptado

Esta única línea haría eso:

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

El primer argumento es una matriz | El segundo argumento es una clave de matriz.

Para obtener más detalles, vaya a la documentación oficial: https://www.php.net/manual/en/function.array-column.php .

Usman Ahmed avatar Nov 12 '2014 12:11 Usman Ahmed

Suponiendo que esta matriz puede o no estar anidada de forma redundante y no está seguro de qué tan profunda es, esto debería aplanarla para usted:

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; 
} 
AlienWebguy avatar Jul 22 '2011 03:07 AlienWebguy