这是动态数组。我试图删除重复的值,只合并一个。例如需要删除[0] => 1/2/48 & [1] => 1/2/48/56
并且只有[2] => 1/2/48/56/58
。
Array(
[0] => 1/2/48
[1] => 1/2/48/56
[2] => 1/2/48/56/58
[3] => 1/2/245
[4] => 1/2/245/246
[5] => 1/2/265
)
所以数组应该看起来像
Array(
[0] => 1/2/48/56/58
[1] => 1/2/245/246
[2] => 1/2/265
)
答案 0 :(得分:2)
一种方法
$a = [
'1/2/48',
'1/2/48/56',
'1/2/48/56/58',
'1/2/245',
'1/2/245/246',
'1/2/265'
];
$result = array_values(
array_filter($a, function ($value, $index) use ($a) {
return !isset($a[$index + 1]) ||
strpos($a[$index + 1], $value) !== 0;
}, ARRAY_FILTER_USE_BOTH)
);
这假设您的输入数组$a
按照您显示的顺序排序。否则你需要先对它进行排序。
答案 1 :(得分:1)
如果您的php版本为5.6.0,并且您没有像
那样对数组进行排序$a = [
'1/2/245/246',
'1/2/48',
'1/2/48/56',
'1/2/245',
'1/2/265',
'1/2/48/56/58'
];
你可以这样尝试
$result = array_values(
array_filter($a, function ($value) use ($a) {
$is_exists = false;
foreach ($a as $v){
if (($v !== $value) && (strpos($v, $value) !== FALSE)){
$is_exists = true;
break;
}
}
return !$is_exists;
})
);