php - 无法从多维数组中删除空键
问题描述
我正在尝试使用 array_filter 函数从数组中删除数组元素。它工作正常,但总是有一个元素没有被删除。
数组由array_combine 构造,使用一个简单数组,另一个由array_chunk 构建。
这是我的代码:
$arr_a = array("AAA","","CCC","");
$arr_b = array("a1","b1","a2","b2","a3","b3","a4","b4");
$arr_c = array_chunk($arr_b,2);
$c = array_combine($arr_a,$arr_c);
$limpn_url = array_filter($c);
如果我得到一个错误,我不会费心在这里发布一个问题。但是没有错误返回。
制作时print_r($limpn_url);
的输出是:
Array ( [AAA] => Array ( [0] => a1 [1] => b1 ) [] => Array ( [0] => a4 [1] => b4 ) [CCC] => Array ( [0] => a3 [1] => b3 ) )
*注意[] => Array ( [0] => a4 [1] => b4 )
那不应该在那里。其他空元素被正确删除...
解决方案
您可以使用一些数组函数来删除为空的键。
$arr_a = array("AAA","","CCC","");
$arr_b = array("a1","b1","a2","b2","a3","b3","a4","b4");
$arr_c = array_chunk($arr_b,2);
$c = array_combine($arr_a,$arr_c);
$limp= array_filter($c);
$filteredkeys = array_filter(array_keys($limp)); // here i remove the "" key
$filtered = array_intersect_key($limp, array_flip($filteredkeys)); // since $filterdkeys is values i need to flip it and intersect with $limp
var_dump($filtered);
输出:
array(2) {
["AAA"]=>
array(2) {
[0]=>
string(2) "a1"
[1]=>
string(2) "b1"
}
["CCC"]=>
array(2) {
[0]=>
string(2) "a3"
[1]=>
string(2) "b3"
}
}
推荐阅读
- python - 使用 localstack 创建 S3 存储桶时出错
- python - 刮擦写入文件需要很长时间,并且只写入刮取文本的一部分
- java - 使用 Apache POI 阅读 Word 文档时如何获取脚注超链接?
- reactjs - 如何在反应中使用 bootstrap5 工具提示
- groovy - 在 Groocy 中使用 Hashmap 创建不可变对象
- java - 使用上传会话使用 microsoft graph API 上传大文件 word 文档
- etl - 从 Snowflake 中的表流中手动刷新数据
- python - 在python中解包大列表
- php - 如何更改 WooCommerce 结帐文本?
- node.js - Shopify Storefront 上的嵌入式自定义 NextJS 应用程序更改资产文件路径