php - 如何将具有相同索引和值的 2 个数组与 php 组合?

标签 php arrays yii2 frameworks

<分区>

我有 2 个数组,如下所示:

$array1 = [
 '0' => [
   'no_invoice' => 'INV0001',
   'product_code' => '1111111',
  ], 
 '1' => [
  'no_invoice' => 'INV0001',
  'product_code' => '1111112',
 ]
];

  $array2 = [
    '0' => [
      'product_code' => '1111112',
      'free_valie' => 839,
      'count' => 1240
    ],
  ];

是否可以将上面的数组组合成这样:

Array(
 [0] => Array
  (
    'no_invoice' => 'INV0001',
    'product_code' => '1111111',
  )
 [1] => Array
  (
    'no_invoice' => 'INV0001',
    'product_code' => '1111112',
    'free_valie' => 839,
    'count' => 1240
  )
)

因此,如果数组具有相同的产品代码,那么它将像上面的示例一样连接。

我尝试过使用数组合并,array_merge($array1, $array2); 但是结果是这样的:

Array(
 [0] => Array
  (
    'no_invoice' => 'INV0001',
    'product_code' => '1111111',
  )
 [1] => Array
  (
    'no_invoice' => 'INV0001',
    'product_code' => '1111112',
  )
 [2] => Array
  (
    'product_code' => '1111112',
    'free_valie' => 839,
    'count' => 1240
  )
)

最佳答案

此代码将执行您想要的操作。它使用 array_search 遍历 $array1 中的每个值查看条目的 product_code 是否也出现在 $array2 中(通过查看 $array2product_code 列使用 array_column 提取)。如果是,则合并这些值。请注意,我们在 foreach 中使用了 &$val,导致值通过引用传递,从而允许在循环中修改它

foreach ($array1 as &$val) {
    if (($k = array_search($val['product_code'], array_column($array2, 'product_code'))) !== false) {
        $val = array_merge($val, $array2[$k]);
    }
}

print_r($array1);

输出:

Array
(
    [0] => Array
        (
            [no_invoice] => INV0001
            [product_code] => 1111111
        )

    [1] => Array
        (
            [no_invoice] => INV0001
            [product_code] => 1111112
            [free_valie] => 839
            [count] => 1240
        )

)

Demo on 3v4l.org

关于php - 如何将具有相同索引和值的 2 个数组与 php 组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53938996/

相关文章:

php - mod_rewrite - RewriteRule - 重定向到不显示 css、图像等的索引

java - String[]数组单独取出项目

dependency-injection - 如何在 Yii2 配置中注入(inject)类依赖?

php - Yii2 和默认值为 NULL 的浮点字段

php - 在不更新页面的情况下获取最新的mysql记录

php - 使用 mySQL 和 PHP 显示来自多个表的数据

php - Laravel - 如何将参数传递给路由?有更好的做法吗?

java - 消除Java排序比较中的越界错误

javascript - 如果另一个 h2 选择关闭当前一个,我如何一次显示一个 h2?

Yii2 kartik 详细 View 隐藏标签