我有一个看起来像这样的数组..
$breadcrumbs = Array
(
[0] => Array
(
[0] => Home
[1] => homepage.html
)
[1] => Array
(
[0] => About
[1] => aboutpage.html
)
[2] => Array
(
[0] => Contact
[1] => contactpage.html
)
)
$remove = Array
(
[0] => Home
)
我正在尝试使用array_diff从$ breadcrumbs中删除Home条目......
return ( array_diff($breadcrumbs, $remove) );
它没有工作,并给我数组字符串转换错误,我哪里错了?
答案 0 :(得分:1)
您可以使用array_filter
过滤数组。使用in_array
检查由字符串组成的数组。
$breadcrumbs = array(
array('Home','homepage.html'),
array('About','aboutpage.html'),
array('Contact','contactpage.html')
);
$remove = array('Home');
$result = array_filter($breadcrumbs, function($o) use ($remove) {
return !in_array( $o[0], $remove );
});
echo "<pre>";
print_r( $result );
echo "</pre>";
这将返回:
Array
(
[1] => Array
(
[0] => About
[1] => aboutpage.html
)
[2] => Array
(
[0] => Contact
[1] => contactpage.html
)
)
另一个选项,如果您只需要页面名称(元素0),则可以使用array_column
将多维arrray转换为简单数组。
$result = array_diff( array_column($breadcrumbs, 0), $remove);
这将导致:
Array
(
[1] => About
[2] => Contact
)
答案 1 :(得分:1)
使用一些数组体操,你可以将breadcrumbs数组转换为关联数组,由第一项键入,然后使用array_diff_keys()
翻转$remove
数组(将值转换为键)
$breadcrumbs = array_column($breadcrumbs, null, 0);
$breadcrumbs = array_diff_key($breadcrumbs, array_flip($remove));
print_r($breadcrumbs);
如果希望结束数组是没有字符串键的基于0的数组,请添加
$breadcrumbs = array_values($breadcrumbs);