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

我有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
  )
)

参考方案

此代码将执行您想要的操作。它使用$array1遍历array_search中的每个值,以查看entrie的product_code是否也出现在$array2中(通过查看使用product_code提取的$array2array_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:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

PHP数组可以这样做吗? - php

可以说;我有一个$ friends数组,其中有2,000个不同的friendID号+我有一个带有10,000 bulletinID号的$ bulletins数组,该$ bulletins数组还将具有另一个值,该ID的用户ID是发布公告条目的用户现在可以获取所有具有与FriendsID数组中的userID匹配的userID的bulletinID号吗?甚至有可能…

phpWord中的粗体,空格和缩进文本 - php

我有一些要加粗的文本,与前几段和后几段分开并缩进。我不能让所有三个属性一起工作。这适用于粗体和空格:$section = $phpWord->addSection(); $section->addText( 'Re: Your Application for Post of Security Guard', array(�…

哪个更好的做法?从Jquery响应获取HTML - php

这只是一个问题,以了解人们如何以及如何做到这一点,但是假设用户向列表中添加了一些内容,完成后,它将运行下面的ajax并更新.user-stream-list$.ajax({ url: "user-stream-list.php", success: function(data){ $(".user-stream-list…

使用PHP从sqlite3数据库检索表名称 - php

我有此代码的工作版本,如下所示,结果为can be seen here。<?php // Display all sqlite tables $db = new SQLite3('data.db'); $tablesquery = $db->query("SELECT name FROM sqlite_master …