Php 使用数组\过滤器删除空的子数组值
我将带有子数组值数据的数组添加到Php 使用数组\过滤器删除空的子数组值,php,arrays,array-filter,Php,Arrays,Array Filter,我将带有子数组值数据的数组添加到mysql数据库中,如下所示: {"2":[ {"title":"english title","link":"english url"}, {"title":"","link":""}], "1":[ {"title":"french
mysql
数据库中,如下所示:
{"2":[
{"title":"english title","link":"english url"},
{"title":"","link":""}],
"1":[
{"title":"french title","link":"french url"},
{"title":"","link":""}]}
var_dump(array_filter(array_map('array_filter', $links)));
我尝试使用array\u filter
和array\u map
删除empty
子数组值,如下所示:
{"2":[
{"title":"english title","link":"english url"},
{"title":"","link":""}],
"1":[
{"title":"french title","link":"french url"},
{"title":"","link":""}]}
var_dump(array_filter(array_map('array_filter', $links)));
现在,当我使用var\u dump
检查时,我看到了这个结果,array\u filter
和array\u map
无法删除空值:
array(2) {
[2]=>
array(3) {
[0]=>
array(2) {
["title"]=>
string(13) "english title"
["link"]=>
string(11) "english url"
}
[1]=>
array(2) {
["title"]=>
string(0) ""
["link"]=>
string(0) ""
}
}
[1]=>
array(3) {
[0]=>
array(2) {
["title"]=>
string(12) "french title"
["link"]=>
string(10) "french url"
}
[1]=>
array(2) {
["title"]=>
string(0) ""
["link"]=>
string(0) ""
}
}
}
在操作中,如何删除空的子数组值
更新:我需要更新此结果:
Array
(
[2] => Array
(
[0] => Array
(
[title] => english title
[link] => english url
)
)
[1] => Array
(
[0] => Array
(
[title] => french title
[link] => french url
)
)
)
您的问题是,您尝试筛选的项目不是空的(empty($links[2][1])==false
),它们是一个两元素数组,因此array\u filter
不会删除它们。相反,您需要检查这两个元素是否都为空。例如,使用:
输出:
Array
(
[2] => Array
(
[0] => Array
(
[title] => english title
[link] => english url
)
)
[1] => Array
(
[0] => Array
(
[title] => french title
[link] => french url
)
)
)
您期望的输出是什么?如果您认为JSON解码产生的对象或数组{“title”:“,“link”:“}
会被PHP认为是“空的”…那么您错了。@Nick:我需要像这样从数组中删除空值:数组([2]=>array([0]=>array([title]=>english title[link]=>english url))[1]=>数组([0]=>数组([title]=>法语标题[link]=>法语url))