Convierta una matriz de matrices de un solo elemento en una matriz unidimensional

2 minutos de lectura

avatar de usuario
DEVOPS

Tengo este tipo de matriz que contiene matrices de un solo elemento:

$array = [[88868], [88867], [88869], [88870]];

Necesito convertir esto a una matriz unidimensional.

Salida deseada:

[88868, 88867, 88869, 88870]

¿Hay alguna funcionalidad de PHP integrada/nativa para esta conversión de matriz?

Para su caso de uso limitado, esto lo hará:

$oneDimensionalArray = array_map('current', $twoDimensionalArray);

Esto puede ser más generalizado cuando los subarreglos tienen muchas entradas para esto:

$oneDimensionalArray = call_user_func_array('array_merge', $twoDimensionalArray);

  • No entiendo ‘actual’. Veo en doc php callable $ callback, pero en el ejemplo no veo la función o el código para esto. Agradezco algún ejemplo.

    – abkrim

    8 de noviembre de 2015 a las 17:47

  • La función @abkrim current() devuelve el valor del elemento actual en una matriz. por ejemplo: $frutas = array(“plátano”, “manzana”, “naranja”); echo current($frutas) //devolverá “banana” ya que el puntero actual está en el índice 0, que es banana.

    – Rafique Mohamed

    2 de junio de 2016 a las 10:17

avatar de usuario
hakré

El PHP array_mergeDocumentos La función puede aplanar su matriz:

$flat = call_user_func_array('array_merge', $array);

En caso de que el arreglo original tenga una profundidad superior a 2 niveles, el SPL en PHP tiene una RecursiveArrayIterator puedes usar para aplanarlo:

$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)), 0);

Ver también: Convirtiendo una matriz multidimensional en una matriz unidimensional

probar:

$new_array = array();
foreach($big_array as $array)
{
    foreach($array as $val)
    {
        array_push($new_array, $val);
    }    
}

print_r($new_array);

$oneDim = array();
foreach($twoDim as $i) {
  $oneDim[] = $i[0];
}

Sí.

$values = array(array(88868), array(88867), array(88869), array(88870));
foreach ($values as &$value) $value = $value[0];

http://codepad.org/f9KjbCCb

avatar de usuario
somesh bawane

foreach($array as $key => $value){
   //check that $value is not empty and an array
   if (!empty($value) && is_array($value)) {
      foreach ($value as $k => $v) {
         //pushing data to new array
         $newArray[] = $v;
      }
   }
}

avatar de usuario
Amir Hosein

Para una matriz bidimensional, esto también funciona:

array_merge(...$twoDimensionalArray)

¿Ha sido útil esta solución?