$data = array(
[0] => array(
"id" => 1,
"parent_id" => ""
),
[1] => array(
"id" => 2,
"parent_id" => 1
),
[2] => array(
"id" => 3,
"parent_id" => 2
),
[3] => array(
"id" => 3,
"parent_id" => ""
)
)
1
baiy 2022-06-01 11:00:02 +08:00
```
print_r(array_filter($data,function($item){ return $item['id'] != 1 && $item['parent_id'] != 1 && $item['parent_id'] != 2; })); ``` |
2
qinwen00888 OP @baiy 我的意思是前端只传过来 id=1,后端删除 id=1 的数组,同时删除 parent_id=1 的数组,因为 parent_id=1 的那个数组的 id=2,所以也要删除 parent_id=2 的数组...如果还有 parent_id=2 的数组 id 为 3 ,如果还有 parent_id=3 的数组也要删除
|
3
IceBay 2022-06-01 11:28:01 +08:00
递归处理咯,传变量时可以用 & 符号传递引用变量
|
4
humpy 2022-06-01 11:39:19 +08:00
function removeIfMatch(&$arr, $id, $parentId)
{ foreach ($arr as $k => $v) { if ($v['id'] === $id && $v['parent_id'] === $parentId) { unset($arr[$k]); } if ($v['parent_id'] === $id) { removeIfMatch($arr, $v['id'], $id); } } } removeIfMatch($data, 1, ''); var_dump($data); |
5
abigeater 2022-06-01 11:39:31 +08:00
将#1 的代码封装一下,然后使用递归就好了
|
6
qinwen00888 OP 谢谢各位大佬
|
7
seth19960929 2022-06-01 16:54:54 +08:00
按 parent_id 排好序 了, 直接迭代就行了.
|