PHP如何将多维数组转换为一维数组 PDO查询场景实例
问题原因
代码处理包含换行符的字符串时,直接将explode()返回的数组作为单个元素追加到结果数组中,最终生成了多维嵌套结构。
修复方案
方案1:兼容所有PHP版本
修改原有循环逻辑,将拆分后的元素逐个追加到结果数组:
<?php $dataResult = array("abcdef", "People 1 - 123-456-7890 People 2 - People 3 - Abcdef Jack People 4 _ Defjkl Smack "); $dataResultArray = []; foreach($dataResult as $result){ if(strstr($result, PHP_EOL)){ foreach(explode(PHP_EOL, $result) as $item) { $dataResultArray[] = $item; } } else { $dataResultArray[] = $result; } } // 输出验证 foreach ($dataResultArray as $value) { echo $value . PHP_EOL; }
方案2:PHP 7.4+ 简化写法
使用数组展开运算符简化追加逻辑:
foreach($dataResult as $result){ if(strstr($result, PHP_EOL)){ array_push($dataResultArray, ...explode(PHP_EOL, $result)); } else { $dataResultArray[] = $result; } }
通用多层嵌套扁平化方案
如果后续会出现更深层级的嵌套数组,可以使用通用扁平化方法处理:
function flatten(array $targetArray): array { $flatResult = []; array_walk_recursive($targetArray, function($item) use (&$flatResult) { $flatResult[] = $item; }); return $flatResult; } // 原有逻辑生成多维数组后,调用该方法即可得到一维数组 $finalResult = flatten($dataResultArray);
内容的提问来源于stack exchange,提问作者Paul Brown
相关产品推荐
相关产品推荐

