Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP合并数组并添加值_Php_Arrays - Fatal编程技术网

PHP合并数组并添加值

PHP合并数组并添加值,php,arrays,Php,Arrays,我需要帮助合并两个PHP数组: 阵列1: Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 6 ) 阵列2: Array ( [0] => Array ( [id_sabor] => 2 [chocolate] => N ) [1] => Array ( [id_sabor] => 3 [chocolate] =>

我需要帮助合并两个PHP数组:

阵列1:

Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 6
)
阵列2:

Array
(
[0] => Array
    (
        [id_sabor] => 2
        [chocolate] => N
    )

[1] => Array
    (
        [id_sabor] => 3
        [chocolate] => S
    )

[2] => Array
    (
        [id_sabor] => 4
        [chocolate] => N
    )

[3] => Array
    (
        [id_sabor] => 5
        [chocolate] => S
    )

[4] => Array
    (
        [id_sabor] => 6
        [chocolate] => N
    )

)

数组1上的值是活动对象。我需要在数组2或新数组中只保留那些与数组1中的
[id\u sabor]
匹配的数组(在本例中:
2、3、4
6
)。另外,在那些
[chocolate]=S
的数组上添加一个新值:
[costo_extra]=25
一种方法是使用并检查第一个数组是否包含
id\u sabor
的值

$array1 = [2, 3, 4, 6];
$array2 = [
    ["id_sabor" => 1, "chocolate" => "N"],
    ["id_sabor" => 2, "chocolate" => "N"],
    ["id_sabor" => 3, "chocolate" => "S"],
    ["id_sabor" => 4, "chocolate" => "N"],
    ["id_sabor" => 5, "chocolate" => "S"],
    ["id_sabor" => 6, "chocolate" => "N"]
];

$array2 = array_reduce($array2, function($carry, $item) use ($array1){
    if (in_array($item["id_sabor"], $array1)) {
        if ($item["chocolate"] === "S") {
            $item["costo_extra"] = 25;
        }
        $carry[] = $item;
    }
    return $carry;
});

只需在数组2上循环一次,如果s,则循环一些。您想创建什么?第二个数组包含数字和巧克力字母。预期的输出应该是多少?非常感谢,第四只鸟。这正是我需要的:)