0

У меня этот массив. Я хочу, чтобы все остальные 3 массива попали в этот массив [0] =>. Не хотите уникального значения, просто нужно объединить все массивы в [0] => Массив.Как сгладить (сжать) многомерный массив в одномерный массив в PHP?

Array 
(
    [0] => Array 
    (
     [0] => Array 
      (
       [Campaign] => xxx 
       [Phone] => 111 
       [State] => cd 
      ) 

     ) 

[1] => Array 
    (
     [0] => Array 
      (
       [Campaign] => zxxxzx 
       [Phone] => 111111 
       [State] => zxxx 
      ) 

     ) 

    [2] => Array 
    (
     [0] => Array 
      (
       [Campaign] => aaaa 
       [Phone] => 111 
       [State] => Csd 
      ) 

     ) 

    [3] => Array 
    (
     [0] => Array 
      (
       [Campaign] => sasa 
       [Phone] => 111 
       [State] => asas 
      ) 

     ) 
) 
+1

Что именно следует результирующий массив выглядеть? –

+0

Вы сдались или что? – AbraCadaver

ответ

1

Это еще один пример того, насколько важно обозначать. То, что вы работаете с в основном:

$recordsGroups = array(
    // first group: 
    array(
     // record 1: 
     array(
      'key1' => 'val1', 
      'key2' => 'val2', 
     ), 
     // record 2: 
     array(
      'key1' => 'aaa', 
      'key2' => 'bbb', 
     ), 
    ), 
    // 2nd group: 
    array(
     // record 3: 
     array(
      'key1' => 'ccc', 
      'key2' => 'ddd', 
     ), 
    ), 
); 

И то, что вы, вероятно, пытается сделать это:

$records = array(); 
foreach ($recordsGroups as $group) 
    foreach ($group as $record) 
     $records[] = $record; 

Который даст вам:

$records = array(
    // record 1: 
    array(
     'key1' => 'val1', 
     'key2' => 'val2', 
    ), 
    // record 2: 
    array(
     'key1' => 'aaa', 
     'key2' => 'bbb', 
    ), 
    // record 3: 
    array(
     'key1' => 'ccc', 
     'key2' => 'ddd', 
    ), 
); 
-2

Вы можете создать новый массив и помещаем в него массивы.

$newArray = array($oldArray[0][0], $oldArray[1][0], $oldArray[2][0], $oldArray[3][0]); 
+0

Это всего лишь предложение о ручном управлении массивом, которое поражает точку даже при использовании языка программирования. –

0

Это должно делать красиво:

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

Поскольку массивы не могут иметь дубликаты ключей, то лучшее, что это мульти-тусклый массив может быть сжата вниз в индексированный массив ассоциативных массивов. array_column() быстро выполнит эту задачу.

Код: (Demo)

$array=[ 
    [ 
     ['Campaign'=>'xxx','Phone'=>'111','State'=>'cd'] 
    ], 
    [ 
     ['Campaign'=>'zxxxzx','Phone'=>'111111','State'=>'zxxx'] 
    ], 
    [ 
     ['Campaign'=>'aaaa','Phone'=>'111','State'=>'Csd'] 
    ], 
    [ 
     ['Campaign'=>'sasa','Phone'=>'111','State'=>'asas'] 
    ] 
]; 

var_export(array_column($array,0)); 

Выход:

array (
    0 => 
    array (
    'Campaign' => 'xxx', 
    'Phone' => '111', 
    'State' => 'cd', 
), 
    1 => 
    array (
    'Campaign' => 'zxxxzx', 
    'Phone' => '111111', 
    'State' => 'zxxx', 
), 
    2 => 
    array (
    'Campaign' => 'aaaa', 
    'Phone' => '111', 
    'State' => 'Csd', 
), 
    3 => 
    array (
    'Campaign' => 'sasa', 
    'Phone' => '111', 
    'State' => 'asas', 
), 
) 
Смежные вопросы