php - 使用 array_filter 删除空子数组值
问题描述
我将带有子数组值数据的数组添加到mysql
数据库中,如下所示:
{"2":[
{"title":"english title","link":"english url"},
{"title":"","link":""}],
"1":[
{"title":"french title","link":"french url"},
{"title":"","link":""}]}
我尝试使用以下方法删除子empty
数组值:array_filter
array_map
var_dump(array_filter(array_map('array_filter', $links)));
现在,当我检查使用时,var_dump
我看到了这个结果并且array_filter
不能array_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) ""
}
}
}
在行动中,我怎样才能删除empty
子数组值?!
更新:我需要这个结果:
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_filter
不会删除它们。相反,您需要检查两个元素是否为空白。例如,使用array_walk
:
array_walk($links, function (&$array) {
$array = array_filter($array, function ($obj) {
return $obj['title'] != '' || $obj['link'] != '';
});
});
print_r($links);
输出:
Array
(
[2] => Array
(
[0] => Array
(
[title] => english title
[link] => english url
)
)
[1] => Array
(
[0] => Array
(
[title] => french title
[link] => french url
)
)
)
推荐阅读
- loss-function - 具有 CTC 损失的 CNN
- azure - 工作站的 Azure 备份失败。没有数据传输到云端
- javascript - 我可以更改什么以使此代码适用于所有部分元素
- reactjs - TypeError:使用 React js 时无法读取 PDFJS.GlobalWorkerOptions.workerSrc 中未定义的属性“GlobalWorkerOptions”
- javascript - 使用 Node js,如何使用 yahoo 天气 api 在单个请求中获取多个城市的天气提要
- wordpress - 当页面不在菜单中时,Timber Twig 将类添加到祖先菜单项
- javascript - PHP encodeURIComponent 重置
- azure - 优化 Azure NSG 的 Powershell 脚本
- php - 使用 PHPWord 库读取 PDF 文件
- android - 如何可靠地获取和检测 Android 上活动音频路由的更改?