在CodeIgniter PHP中将多维数组转换为一维数组
如何将嵌套包含stdClass对象的多维数组转为一维数组
你现在有这样的两层嵌套多维数组(元素是带id属性的stdClass对象):
Array ( [0] => Array ( [0] => stdClass Object ( [id] => 237 ) [1] => stdClass Object ( [id] => 228 ) ) [1] => Array ( [0] => stdClass Object ( [id] => 247 ) [1] => stdClass Object ( [id] => 238 ) ) )
想要转换成这样的一维数组:
Array ( [0] => stdClass Object ( [id] => 237 ) [1] => stdClass Object ( [id] => 228 ) [2] => stdClass Object ( [id] => 247 ) [3] => stdClass Object ( [id] => 238 ) )
之前尝试的方案没生效,大概率是因为那些方案针对的是更深层次的嵌套或需要递归处理的场景,而你的数组是固定的两层结构,用下面的方法就能轻松解决:
方法一:双层foreach循环(直观易懂)
这是最基础也最不容易出错的方式,手动遍历每一层数组,把对象逐个放到新数组里:
// 假设你的原数组是$multiArray $flatArray = []; foreach ($multiArray as $subArray) { foreach ($subArray as $obj) { $flatArray[] = $obj; } } // 输出结果 print_r($flatArray);
方法二:用array_merge+扩展运算符(简洁高效)
如果你的PHP版本是5.6及以上,可以用扩展运算符...把外层数组拆成多个参数传给array_merge,直接合并所有子数组:
$flatArray = array_merge(...$multiArray); print_r($flatArray);
这个方法能生效的原因是,你的外层数组的每个元素都是一维数组,array_merge会把这些子数组的元素依次合并到一个新数组里,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Shreyas Achar
相关产品推荐
相关产品推荐

