我有一个数组
$result
,如下所示:
[0] => Array (
[0] => Array (
[itemid] => 1
[name] => A
)
[1] => Array (
[itemid] => 2
[name] => B
)
)
[1] => Array (
[0] => Array (
[itemid] => 3
[name] => C
)
[1] => Array (
[itemid] => 2
[name] => B
)
)
和一个数组
$items
,如下所示:
[0] => Array (
[itemid] => 2
[name] => B
)
[1] => Array (
[itemid] => 4
[name] => D
)
如何从
$result
数组中删除 $items
数组中出现的所有项目?在这种情况下,$result
将变为:
[0] => Array (
[0] => Array (
[itemid] => 1
[name] => A
)
)
[1] => Array (
[0] => Array (
[itemid] => 3
[name] => C
)
)
由于问题主要是代码,因此这里有一些额外的字符以使 StackOverflow 接受问题。
我想这就是你想要的。 (尚未测试)
<?php
foreach ($result as $key => $array) {
$result[$key] = array_diff($array, $items);
}
print_r($result);
循环 3D 输入数组中的数据集,并利用白名单对每组数据进行
array_udiff()
的过滤调用。
代码:(演示)
$array = [
[
['itemid' => 1, 'name' => 'A'],
['itemid' => 2, 'name' => 'B'],
],
[
['itemid' => 3, 'name' => 'C'],
['itemid' => 4, 'name' => 'D'],
],
];
$whitelist = [
['itemid' => 2, 'name' => 'B'],
['itemid' => 4, 'name' => 'D'],
];
var_export(
array_map(
fn($set) => array_udiff(
$set,
$whitelist,
fn($a, $b) => $a <=> $b
),
$array
)
);
输出:
array (
0 =>
array (
0 =>
array (
'itemid' => 1,
'name' => 'A',
),
),
1 =>
array (
0 =>
array (
'itemid' => 3,
'name' => 'C',
),
),
)