Php 在两个多维数组中按键/值合并
数组#1如下所示(简化): 数组#2如下所示:Php 在两个多维数组中按键/值合并,php,arrays,multidimensional-array,merge,Php,Arrays,Multidimensional Array,Merge,数组#1如下所示(简化): 数组#2如下所示: Array ( [0] => Array ( [category] => Appetizers [note] => Choose One Item From Each Category ) [1] => Array ( [category] => Flatbreads
Array
(
[0] => Array
(
[category] => Appetizers
[note] => Choose One Item From Each Category
)
[1] => Array
(
[category] => Flatbreads
[note] => with Shoestring or Wedge Potatoes
)
)
Array
(
[Appetizers] => Array
(
[0] => Array
(
[category] => Appetizers
[name] => Beef Tenderloin Carpaccio
[note] => Choose One Item From Each Category
)
[1] => Array
(
[category] => Appetizers
[name] => Calamari Fritto Misto
[note] => Choose One Item From Each Category
)
)
[Flatbreads] => Array
(
[0] => Array
(
[category] => Flatbreads
[name] => Quattro Formaggi
[note] => with Shoestring or Wedge Potatoes
)
[1] => Array
(
[category] => Flatbreads
[name] => Tomato & Burrata
[note] => with Shoestring or Wedge Potatoes
)
)
)
如何根据数组#1的类别键与数组#2的“类别”值的匹配,将数组#2中的['note']合并到数组#1中?所以结果是这样的:
Array
(
[0] => Array
(
[category] => Appetizers
[note] => Choose One Item From Each Category
)
[1] => Array
(
[category] => Flatbreads
[note] => with Shoestring or Wedge Potatoes
)
)
Array
(
[Appetizers] => Array
(
[0] => Array
(
[category] => Appetizers
[name] => Beef Tenderloin Carpaccio
[note] => Choose One Item From Each Category
)
[1] => Array
(
[category] => Appetizers
[name] => Calamari Fritto Misto
[note] => Choose One Item From Each Category
)
)
[Flatbreads] => Array
(
[0] => Array
(
[category] => Flatbreads
[name] => Quattro Formaggi
[note] => with Shoestring or Wedge Potatoes
)
[1] => Array
(
[category] => Flatbreads
[name] => Tomato & Burrata
[note] => with Shoestring or Wedge Potatoes
)
)
)
试试这个
$courses = array( 'Appetizers' => array( array( 'category' => 'Appetizers', 'name' => 'Beef Tenderloin' ), array( 'category' => 'Appetizers', 'name' => 'Calamari' ) ) );
$notes = array( array( 'category' => 'Appetizers', 'note' => 'Choose One Item From Each Category' ) );
function note( $key, $array ) {
foreach( $array as $element )
if( $element['category'] == $key )
return $element['note'];
return '';
}
foreach( $courses as $key => &$course ) {
$course = array_map( function( $el ) use( $notes ) {
$el['note'] = note( $el['category'], $notes );
return $el;
}, $course );
}
print_r( $courses );
它产生
Array
(
[Appetizers] => Array
(
[0] => Array
(
[category] => Appetizers
[name] => Beef Tenderloin
[note] => Choose One Item From Each Category
)
[1] => Array
(
[category] => Appetizers
[name] => Calamari
[note] => Choose One Item From Each Category
)
)
)
假设你不需要支持可变深度数组,你可以看看这个问题——谢谢,但是是的,它们确实有可变深度。