Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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,我有三个数组,如下所示: $one = array ( array ( 'supplier_name' => 'SUP1', 'product_code' => 'ITM001', 'product' => 'Book', 'price' => '5500', ), array ( 'supplier_name' => 'SUP1

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

$one = array ( array ( 'supplier_name' => 'SUP1', 'product_code' => 'ITM001', 'product' => 'Book', 'price' => '5500', ), array ( 'supplier_name' => 'SUP1', 'product_code' => 'ITM002', 'product' => 'Pencil', 'price' => '1500', ), array ( 'supplier_name' => 'SUP1', 'product_code' => 'ITM002', 'product' => 'Eraser', 'price' => '1750', ), ) $two = array ( array ( 'supplier_name' => 'SUP2', 'product_code' => 'SP001', 'product' => 'Book', 'price' => '5250', ), array ( 'supplier_name' => 'SUP2', 'product_code' => 'SP002', 'product' => 'Pencil', 'price' => '1550', ), array ( 'supplier_name' => 'SUP2', 'product_code' => 'SP002', 'product' => 'Ruler', 'price' => '2300', ), ) $three = array ( array ( 'supplier_name' => 'SUP3', 'product_code' => 'BRG01', 'product' => 'Book', 'price' => '5250', ), array ( 'supplier_name' => 'SUP3', 'product_code' => 'BRG02', 'product' => 'Ruler', 'price' => '2350', ), array ( 'supplier_name' => 'SUP3', 'product_code' => 'BRG02', 'product' => 'Drawing book', 'price' => '4500', ), ) 如何删除价值较高的重复项,并仅获取所有项目的较低价格

Array
(
    [0] => Array
        (
            [supplier_name] => SUP2
            [product_code] => SP001
            [product] => Book
            [price] => 5250
        )

    [1] => Array
        (
            [supplier_name] => SUP1
            [product_code] => ITM002
            [product] => Pencil
            [price] => 1500
        )

    [2] => Array
        (
            [supplier_name] => SUP1
            [product_code] => ITM002
            [product] => Eraser
            [price] => 1750
        )

    [3] => Array
        (
            [supplier_name] => SUP2
            [product_code] => SP002
            [product] => Ruler
            [price] => 2300
        )

    [4] => Array
        (
            [supplier_name] => SUP3
            [product_code] => BRG02
            [product] => Drawing book
            [price] => 4500
        )

)

请告知。谢谢。

您似乎正在使用PHP。虽然使用唯一的命名密钥映射产品会更好、更省力,但这里有一种解决问题的方法

不要使用array\u merge,因为它不允许您使用回调来只保留更便宜的产品

这里是一个可以使用的伪代码,而不是我提供的未经测试的php。使其适应您的源代码

//一切都有开始。 数组\结果=数组 //浏览阵列1 对于阵列的每个项目1 已找到\u项=false //对于array1的每个产品,在array2中寻找相同的产品 对于阵列2的每个项目2 如果是相同的产品项目1,项目2 如果item1.price听起来您的商品没有唯一的密钥多个产品可以具有相同的供应商名称和相同的产品代码。每个产品都有一个唯一的密钥将不会那么痛苦,您的问题将变得更容易解决。感谢您的建议,我已经为我的案例找到了解决方案,您链接的解决方案使用命名密钥$outUnique[$curPid]=$entry;要填充结果数组,请执行以下操作:如前所述,也许你应该用它们来储存你的产品,一个产品的钥匙。粘贴的链接格式错误。
Array
(
    [0] => Array
        (
            [supplier_name] => SUP2
            [product_code] => SP001
            [product] => Book
            [price] => 5250
        )

    [1] => Array
        (
            [supplier_name] => SUP1
            [product_code] => ITM002
            [product] => Pencil
            [price] => 1500
        )

    [2] => Array
        (
            [supplier_name] => SUP1
            [product_code] => ITM002
            [product] => Eraser
            [price] => 1750
        )

    [3] => Array
        (
            [supplier_name] => SUP2
            [product_code] => SP002
            [product] => Ruler
            [price] => 2300
        )

    [4] => Array
        (
            [supplier_name] => SUP3
            [product_code] => BRG02
            [product] => Drawing book
            [price] => 4500
        )

)