如何将二级数组转换为一维数组?含空值项过滤需求
嘿,这个需求我之前也碰到过,两种简单的写法都能搞定,看你习惯哪种👇
PHP 实现方案
先还原你的原始数组:
$originalArray = [ 12601 => ['docUpload' => 'html dom.txt'], 12602 => ['docUpload' => 'PYTHON AND DJANGO ARE HUGE IN FINTECH.txt'], 12603 => ['docUpload' => ''] ];
方法一:foreach 循环遍历(直观易懂)
这种写法逻辑清晰,新手也能一眼看懂:
$result = []; foreach ($originalArray as $key => $item) { // 检查子数组里的 docUpload 是否非空,排除空字符串 if (!empty($item['docUpload'])) { $result[$key] = $item['docUpload']; } } print_r($result);
执行后输出的结果就是你想要的:
Array ( [12601] => html dom.txt [12602] => PYTHON AND DJANGO ARE HUGE IN FINTECH.txt )
方法二:函数式写法(更简洁)
用 array_column 提取值,再用 array_filter 过滤空值,一行核心代码搞定:
// 提取所有 docUpload 的值,保留原数组的键 $extracted = array_column($originalArray, 'docUpload'); // 过滤掉空值(默认会排除空字符串、null、0 等“假值”) $result = array_filter($extracted); print_r($result);
如果需要更严格的过滤(比如只排除空字符串,不排除数字 0 这类值),可以给 array_filter 传个回调函数:
$result = array_filter($extracted, function($value) { return $value !== ''; });
Python 实现方案
看你数组里有 Python 相关的文件名,顺便给你补个 Python 版本:
先定义原始字典:
original_dict = { 12601: {'docUpload': 'html dom.txt'}, 12602: {'docUpload': 'PYTHON AND DJANGO ARE HUGE IN FINTECH.txt'}, 12603: {'docUpload': ''} }
用字典推导式一行搞定,还能顺便过滤掉可能的空白字符:
result = { key: item['docUpload'] for key, item in original_dict.items() if item['docUpload'].strip() != '' } print(result)
输出结果:
{12601: 'html dom.txt', 12602: 'PYTHON AND DJANGO ARE HUGE IN FINTECH.txt'}
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

