PHP - array_diff 给出数组到字符串的转换错误
PHP - array_diff giving Array to string conversion errors
我有一个看起来像这样的数组..
$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 中删除主页条目...
return ( array_diff($breadcrumbs, $remove) );
它不工作并给我数组到字符串的转换错误,我哪里出错了?
可以使用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>";
这将 return:
Array
(
[1] => Array
(
[0] => About
[1] => aboutpage.html
)
[2] => Array
(
[0] => Contact
[1] => contactpage.html
)
)
另一种选择,如果你只需要页面名称(元素0),你可以使用array_column
将多维数组转换为简单数组。
$result = array_diff( array_column($breadcrumbs, 0), $remove);
这将导致:
Array
(
[1] => About
[2] => Contact
)
使用一些数组技巧,您可以将面包屑数组转换为关联数组,以第一项为键,然后使用 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);
我有一个看起来像这样的数组..
$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 中删除主页条目...
return ( array_diff($breadcrumbs, $remove) );
它不工作并给我数组到字符串的转换错误,我哪里出错了?
可以使用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>";
这将 return:
Array
(
[1] => Array
(
[0] => About
[1] => aboutpage.html
)
[2] => Array
(
[0] => Contact
[1] => contactpage.html
)
)
另一种选择,如果你只需要页面名称(元素0),你可以使用array_column
将多维数组转换为简单数组。
$result = array_diff( array_column($breadcrumbs, 0), $remove);
这将导致:
Array
(
[1] => About
[2] => Contact
)
使用一些数组技巧,您可以将面包屑数组转换为关联数组,以第一项为键,然后使用 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);