Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Multidimensional Array_Duplicates - Fatal编程技术网

PHP:根据自定义条件查找并删除重复的多维数组元素

PHP:根据自定义条件查找并删除重复的多维数组元素,php,multidimensional-array,duplicates,Php,Multidimensional Array,Duplicates,这是我的阵列: $productsArray = [ '0' => [ 'id' => 1, 'code' => 1000, 'in_promo' => 1, ], '1' => [ 'id' => 2, 'code' => 1000, 'in_promo' => 3, ], ]; 我需要检查是否有具有相同'code'和

这是我的阵列:

$productsArray = [
    '0' => [
        'id' => 1,
        'code' => 1000,
        'in_promo' => 1,
    ],
    '1' => [
        'id' => 2,
        'code' => 1000,
        'in_promo' => 3,
    ],
];

我需要检查是否有具有相同
'code'
'in_promo'=>1
3
的元素,并删除具有
'in_promo'=>1
的元素,以支持具有
'in_promo'=>3
的元素。如何使用PHP数组函数实现这一点
提前感谢。

来自php.net文档:“请注意,array_unique()不适用于多维数组。”我还需要应用自定义条件。您能在额外输入的同时发布预期输出吗
$productsArray = [
    '0' => [
        'id' => 1,
        'code' => 1000,
        'in_promo' => 1,
    ],
    '1' => [
        'id' => 2,
        'code' => 1000,
        'in_promo' => 3,
    ],
    '10' => [
        'id' => 3,
        'code' => 1000,
        'in_promo' => 2,
    ],
    '11' => [
        'id' => 4,
        'code' => 1001,
        'in_promo' => 3,
    ],
];

$hasPromoNeedle = array_filter($productsArray, function (array $array)
{
    return in_array($array['in_promo'], [1, 3]);
});

print_r(array_filter($hasPromoNeedle, function (array $array1, $k1) use ($hasPromoNeedle) {

    foreach ($hasPromoNeedle as $k2 => $array2)
    {
        if ($array1['code'] == $array2['code'] and $k1 != $k2)
        {
            return true;
        }
    }

    return false;
}, ARRAY_FILTER_USE_BOTH ));