php - 如果值与PHP中数组中的其他值相关,如何从数组中删除数组?
问题描述
我有一个数组,想删除相关的值形式数组。
前任。
在数组 [0] 中有 1/2/3 并且 [1] 有 1/2/3/4 然后 [0] 与 [1] 相关,因此从数组中删除具有 1/2/3 的 [0]。
另一个例子是
前任。
[2] 有 1/2/5,[3] 有 1/2/5/6,[4] 有 1/2/5/6/7 然后 [2] 和 [3] 取决于 [4] 所以删除[2] 和 [3] 都是数组形式的数组。
有关更多详细信息,请查看以下示例。
Array
(
[0] => Array
(
[id] => 1/2/3
)
[1] => Array
(
[id] => 1/2/3/4
)
[2] => Array
(
[id] => 1/2/5
)
[3] => Array
(
[id] => 1/2/5/6
)
[4] => Array
(
[id] => 1/2/5/6/7
)
)
想要输出:
Array
(
[0] => Array
(
[id] => 1/2/3/4
)
[1] => Array
(
[id] => 1/2/5/6/7
)
)
我不知道我该怎么做。是否可以?
解决方案
当然这是可能的。您需要先对元素进行排序,然后这非常简单。
<?php
$input = [
[ "id" => "1/2/3" ],
[ "id" => "1/2/3/4" ],
[ "id" => "1/2/5" ],
[ "id" => "1/2/5/6" ],
[ "id" => "1/2/5/6/7" ]
];
//firstly sort this array in reverse order
//like so 1/2/3/4 is before 1/2/3
usort(
$input,
function($e1, $e2) {
return $e2["id"] <=> $e1["id"];
}
);
$output = array_reduce(
$input,
function($out, $el) {
if (empty($out)) {
$out[] = $el;
} else {
$lastEl = $out[count($out) - 1];
//we add element to the result array
//only if actual last element doesn't begin with it
if (strpos($lastEl['id'], $el['id']) !== 0) {
$out[] = $el;
}
}
return $out;
},
[]
);
var_dump($output);
推荐阅读
- google-sheets - 如何将文本颜色与条件格式的单元格颜色匹配?
- playwright - 剧作家 - 发出删除请求
- animation - 应用时间抗锯齿?
- python-3.x - 我有两个列表,我比较了它们的值,当我将它们附加到一个新列表中时,它会重复,我不想重复只合并它们。请看下面
- javascript - Webpack 4 的构建时间只能通过使用适用于 Webpack 1 的插件来减少
- html - 如何在布局中正确对齐 LI 中的文本和 DIV 中的图像?
- ocaml - 在匹配表达式中调用 2 个或更多函数
- android - Android 中的命名空间
- reactjs - 居中 TabContext 材质-ui/core
- python - 通过递归函数在python中查找阶乘的代码中有什么错误?