php 数组合并或将一个数组的键和值推入另一个数组

7uhlpewt  于 2023-03-16  发布在  PHP
关注(0)|答案(4)|浏览(167)

我有2个数组,想把一个数组的键和值添加到另一个数组的每个成员中。第一个数组是:

Array
(
    [0] => Array
        (
            [supply_id] => 2
        )

    [1] => Array
        (
            [supply_id] => 4
        )

    [2] => Array
        (
            [supply_id] => 5
        )

)

第二个数组是:

Array
(
    [status] => 1
    [t1_id] => 59
)

我需要的结果是:

Array
(
    [0] => Array
        (
            [supply_id] => 2,
            [status] => 1,
            [t1_id] => 59,

        )

    [1] => Array
        (
            [supply_id] => 4,
            [status] => 1,
            [t1_id] => 59,
        )

    [2] => Array
        (
            [supply_id] => 5,
            [status] => 1,
            [t1_id] => 59,
        )

)

我想这看起来很简单,但是我解决不了,有谁能帮我吗?

uxhixvfz

uxhixvfz1#

你可以试试这个:

$res = array();
foreach($secondArray as $k => $v){
    $res[$k] = array_merge($secondArray[$k], $firstArray[$k]);
}
dldeef67

dldeef672#

循环第一个数组,然后合并新数组中的值:

$array_1= array
(
    0 => array
        (
            "supply_id" => 2
        ),

    1 => array
        (
            "supply_id" => 4
        ),

    2 => array
        (
            "supply_id" => 5
        ),

);

$array_2=array
(
    "status" => 1,
    "t1_id" => 59
);
$new_array = array();
foreach ($array_1 as $key => $value) {
    $new_array[] = array_merge($value,$array_2);
}
var_dump($new_array);

o/p:

array (size=3)
  0 => 
    array (size=3)
      'supply_id' => int 2
      'status' => int 1
      't1_id' => int 59
  1 => 
    array (size=3)
      'supply_id' => int 4
      'status' => int 1
      't1_id' => int 59
  2 => 
    array (size=3)
      'supply_id' => int 5
      'status' => int 1
      't1_id' => int 59
wko9yo5t

wko9yo5t3#

这里我们使用简单的foreach环路来实现所需的输出。
Try this code snippet here

foreach($firstArray as $key  => &$value)
{
    $value=  array_merge($value,$secondArray);
}
print_r($array);
avwztpqn

avwztpqn4#

array_walk()array_map()是本机函数,非常适合于将行数据与静态数组合并的任务。
array_map()将遍历第一个数组的行,并将每一行与第二个数组中不变的数据合并,native函数将返回一个新的关联行索引数组。
代码:(Demo

var_export(
    array_map(
        fn($row) => $row += $array2,
        $array1
    )
);

array_walk()的第三个输入参数将接收静态值,并且回调函数的第三个参数将包含整个传入的数组。
下面的代码片段将修改第一个数组,而不是生成一个新的结果数组。$i表示与每行相关的第一级键/索引--$i值没有使用。
代码:(Demo

array_walk(
    $array1,
    fn(&$row, $i, $new) => $row += $new,
    $array2
);
var_export($array1);

相关问题