PHP中如何移除关联数组中的空条目?
移除二维数组中的空字符串条目
你的原始数组结构如下:
array(2) { ["number_s"]=> array(14) { [0]=> string(2) "22" [1]=> string(2) "23" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" // 剩余9个空条目省略 } ["player_name"]=> array(14) { [0]=> string(9) "John Doe" [1]=> string(11) "Jack Sparrow" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" // 剩余9个空条目省略 } }
之前的方案无效是因为你的数组是二维结构,多数通用方案仅针对一维数组设计。以下是适配你场景的解决方案:
方案1:精准过滤空字符串(保留其他空值类型)
如果需要仅移除""这类空字符串,保留0、false等其他合法值,使用带自定义回调的array_filter结合array_map遍历外层数组:
// 定义原始数组 $originalArray = [ "number_s" => ["22", "23", "", "", "", /* 剩余空条目 */], "player_name" => ["John Doe", "Jack Sparrow", "", "", "", /* 剩余空条目 */] ]; // 清理空字符串条目 $cleanedArray = array_map(function($subArray) { // 仅过滤严格等于空字符串的条目 $filtered = array_filter($subArray, function($value) { return $value !== ""; }); // 可选:重置内层数组的索引(从0开始连续排列) return array_values($filtered); }, $originalArray); // 输出结果 print_r($cleanedArray);
方案2:快速过滤所有“空值”(含0、false等)
如果不需要区分空字符串和其他空值类型(比如null、0、false),可以简化为直接调用array_filter:
$cleanedArray = array_map('array_filter', $originalArray); // 同样可选重置索引: // $cleanedArray = array_map(function($sub) { return array_values(array_filter($sub)); }, $originalArray);
处理后结果示例
执行上述代码后,你的数组会被清理为:
Array ( [number_s] => Array ( [0] => 22 [1] => 23 ) [player_name] => Array ( [0] => John Doe [1] => Jack Sparrow ) )
内容的提问来源于stack exchange,提问作者chtouk
相关产品推荐
相关产品推荐

