Intereting Posts
PHP DOMDocument :: save () сохраняет как ASCII вместо UTF-8 Ошибка CakePHP: невозможно настроить сеанс, не удалось установить session.auto_start Как поместить php внутри JavaScript? Я не могу убить процесс в php-скрипте на Ubuntu Примеры тестирования Zend_Rest_Controller Unit Как я могу подключиться к серверу через JavaScript, где размещена моя PHP-программа? Php включает в себя и изображения, не работающие для переписанных URL-адресов MySQL, нужно выбрать строки, которые имеют самые частые значения в другой таблице Правильная реализация PHPass Удаленная отладка PHP: XDebug не может подключиться к клиенту JetBrains php Storm GAE, PHP и GCM: не удалось открыть поток: HTTP-запрос не удался! Метод HTTP / 1.0 405 не разрешен Как следует преобразовывать IP2 в преобразованные IP-адреса в MySQL? Как отобразить результат массива Объединение массивов в один, сохраняя значения key => value PHP Неопределенная ошибка переменной при вызове функции из другого фрагмента

Слой слоя из массива mulitdimensional PHP

У меня возникают трудности с манипулированием массивом ниже. Я пробовал разные вещи, и я чувствую, что должен быть простой способ добиться этого, но я не могу понять это. Любые советы или помощь значительно оценили, спасибо!

Array ( [0] => Array ( [0] => Array ( [Color] => Blue ) [1] => Array ( [Size] => S ) ) [1] => Array ( [0] => Array ( [Color] => Blue ) [1] => Array ( [Size] => M ) ) ) 

Мой желаемый результат:

  Array ( [0] => Array ( [Color] => Blue [Size] => S ) [1] => Array ( [Color] => Blue [Size] => M ) ) 

Это работает:

 $items = array( array( array("Color" => "Blue"), array("Size" => "S") ), array( array("Color" => "Blue"), array("Size" => "M") ) ); $new_items = array(); foreach ($items as $item) { $collect = array(); foreach ($item as $values) { foreach ($values as $key => $value) { $collect[$key] = $value; } } $new_items[] = $collect; } var_dump($new_items); 

Ваш массив имеет 3 глубины, поэтому вам нужно как минимум 3 вложенных цикла.

Вывод:

 array(2) { [0]=> array(2) { ["Color"]=> string(4) "Blue" ["Size"]=> string(1) "S" } [1]=> array(2) { ["Color"]=> string(4) "Blue" ["Size"]=> string(1) "M" } } 

2 цикла достаточно с array_merge

 $a = array( array( array( 'Color' => 'Blue' ), array( 'Size' => 'S' ), ), array( array( 'Color' => 'Blue' ), array( 'Size' => 'M' ), ), ); $c = array(); foreach($a as $b) { $ca = array(); if(is_array($b)) { foreach($b as $array) { $ca = array_merge($ca, $array); } $c[] = $ca; } } echo '<pre>'.print_r($c,true); 

Вы можете использовать array_map для этого:

 <?php function combine($elementArray) { return array($elementArray[0]["Color"], $elementArray[1]['Size']); } $originalArray = array( 0 => array( 0 => array("Color" => "Blue"), 1 => array("Size" => "S") ), 1 => array( 0 => array( "Color" => "Blue"), 1 => array("Size" => "M") ) ); $combinedArray = array_map("combine", $originalArray); echo "<pre>"; print_r($combinedArray); ?> 

Также вы можете использовать анонимные функции и делать это как про;)

 $combinedArray = array_map( function($element){ return array( "Color" => $element[0]["Color"], "Size" => $element[1]['Size'] ); },$originalArray); 

Или вы даже можете использовать пример array_reduce:

 $reducedArray = array_reduce($originalArray, function($result, $item){ $result[] = array( 'Color' => $item[0]['Color'], 'Size' => $item[1]['Size'] ); return $result; }); 

Надеюсь, это поможет

  $array = array( array( array( 'color'=>'Blue' ), array( 'size'=>'s' ) ), array( array( 'color'=>'Red' ), array( 'size'=>'m' ) ) ); $mA = array(); foreach($array as $k=>$a){ array_push($mA,array_merge($a[0],$a[1])); } var_dump($mA);