Php 在两个多维数组中按键/值合并

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

数组#1如下所示(简化):

数组#2如下所示:

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
                )

        )

)

假设你不需要支持可变深度数组,你可以看看这个问题——谢谢,但是是的,它们确实有可变深度。