2015-08-24 3 views
0

У меня этот массив в PHP. Но я хочу, чтобы извлечь каждый элемент массива и поместить его в окружающем массиве, как это:Извлечь массив из внутреннего массива в PHP

[PordersProduct] => Array 
(
    [0] => Array 
    (
     [1] => Array 
     (
      [product_id] => 300001300 
      [Product] => Array 
       (
        [name] => RELLENO CARNE P/ EMPANADA X KG 
       ) 

      [requested] => 2.500 
      [formula_quantity] => 0 
      [cep_quantity] => 35.723 
      [wr_semi_finished_quantity] => 0 
      [in_execution_quantity] => 7488.131 
      [wr_total_semi_finished_quantity] => 7523.854 
      [to_produced_orders_quantity] => 0 
     ) 

    ) 

    [1] => Array 
    (
     [0] => Array 
     (
      [product_id] => 300002841 
      [Product] => Array 
       (
        [name] => DISCO PARA EMPANDAS DE 85 GRS POR UNIDAD 
       ) 

      [requested] => 50 
      [formula_quantity] => 0 
      [cep_quantity] => 0 
      [wr_semi_finished_quantity] => 0 
      [in_execution_quantity] => 7925 
      [wr_total_semi_finished_quantity] => 7925 
      [to_produced_orders_quantity] => 0 
     ) 

    ) 

) 

Но я хочу, чтобы это было так:

[PordersProduct] => Array 
(
[0] => Array 
    (

     [product_id] => 300001300 
     [Product] => Array 
      (
       [name] => RELLENO CARNE P/ EMPANADA X KG 
      ) 

     [requested] => 2.500 
     [formula_quantity] => 0 
     [cep_quantity] => 35.723 
     [wr_semi_finished_quantity] => 0 
     [in_execution_quantity] => 7488.131 
     [wr_total_semi_finished_quantity] => 7523.854 
     [to_produced_orders_quantity] => 0 

    ) 

[1] => Array 
    (

     [product_id] => 300002841 
     [Product] => Array 
      (
       [name] => DISCO PARA EMPANDAS DE 85 GRS POR UNIDAD 
      ) 

     [requested] => 50 
     [formula_quantity] => 0 
     [cep_quantity] => 0 
     [wr_semi_finished_quantity] => 0 
     [in_execution_quantity] => 7925 
     [wr_total_semi_finished_quantity] => 7925 
     [to_produced_orders_quantity] => 0 

    ) 

) 

Как я могу это сделать ??

Я попытался это:

grouped_data_porders2 = array(); // other array 
    foreach ($grouped_data_porders['PordersProduct'] as $key => $item) { 
       $grouped_data_porders2['PordersProduct'][] = $item[$key]; 
      } 
      $grouped_data_porders['PordersProduct'] = $grouped_data_porders2['PordersProduct']; 

Но это не работает, вы можете помочь мне, пожалуйста.

Благодаря

+0

Ваши ключи не совпадают, например. '[0] -> [1]' и '[1] -> [0]', и вы изменяете родительский массив при его итерации, что обычно не является хорошей идеей. –

+0

grouped_data_porders2 это еще один массив, оригинал - grouped_data_porders без 2 – juanpscotto

+0

Возможный дубликат [Объединить массивы PHP в простой массив?] (Http://stackoverflow.com/questions/30308665/merge-php-arrays-into-simple- массив) – CodeGodie

ответ

2

Я хотел бы использовать foreach перебрать массив, а затем снова перебирать над внутренним массивом для создания нового (окончательного) массива:

$PordersProduct = [];// <-- your array 

foreach ($PordersProduct as $arr) { 
    foreach ($arr as $block) { 
     $final[] = $block; 
    } 
} 

var_dump($final); 
+0

@phpmeh, если вы посмотрите на ожидаемый вывод OP, объединение ключей не требуется. – CodeGodie

2

Вы можете сделать это с помощью array_reduce функции с array_merge, чтобы сгладить внешний уровень массива

$result=array_reduce($arr,'array_merge',array()); 
+0

Почему голосование вниз? –

1

вам необходимо дважды проехать в два раза тьфу ваш массив

$new_data = []; 
foreach ($data as $k1 => $v1){ 
    foreach ($v1 as $k2 => $v2){ 
    $new_data[$k1] = $v2; 
    } 
} 
print_r($new_data); // check the output. 
1

Вы можете попробовать это:

$data = []; 
$newdata = []; 
foreach($data as $item){ 
    $newdata[] = $item[0]; 
} 

Update: также проверка ответ @ Ури Горена. Это та же концепция, но короче.

Обновление 2: @ uri-goren, похоже, изменил его ответ. Это было что-то вроде этого:

$newdata = array_map(function($item){ 
     return $item[0]; 
    }, $data); 

Этого использование array_map функции PHP, которая перебирает через массив, и отправляет каждое значение пользовательской функции и возвращает новый массив со значениями данных с помощью функции. Он ожидает имя функции или anonymous function и один или несколько массивов.

Смежные вопросы