php 将关联数组合并/推入2d数组的每一行

de90aj5v  于 2023-03-22  发布在  PHP
关注(0)|答案(4)|浏览(140)

我需要合并一个关联数组到一个二维数组的每一行。
第一个数组是:

[
    ["supply_id" => 2],
    ["supply_id" => 4],
    ["supply_id" => 5],
]

第二个数组是:

["status" => 1, "t1_id" => 59]

我需要的结果是:

[
    ["supply_id" => 2, "status" => 1, "t1_id" => 59],
    ["supply_id" => 4, "status" => 1, "t1_id" => 59],
    ["supply_id" => 5, "status" => 1, "t1_id" => 59],
]

如何将关联数组元素推入每一行?

vfhzx4xs

vfhzx4xs1#

你可以试试这个:

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

bksxznpy2#

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

$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
hts6caw3

hts6caw33#

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

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

5f0d552i4#

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);

相关问题