Laravel8中如何将未知深度多维数组转为带关联行的索引二维数组
如何在Laravel 8中将深度不确定的多维数组扁平化为排序后的二维数组
针对你需要将嵌套层级不确定的多维数组转换为二维数组,并按id排序的需求,这里提供两种实用实现方案:
方案一:纯PHP递归实现
通过递归遍历数组,收集所有包含id、level、email键的目标元素,最后完成排序:
function flattenNestedArray($array) { $result = []; foreach ($array as $item) { // 判断当前元素是否为目标数据项 if (isset($item['id'], $item['level'], $item['email'])) { $result[] = $item; } else { // 递归处理子数组并合并结果 $result = array_merge($result, flattenNestedArray($item)); } } // 按id升序排序 usort($result, fn($a, $b) => $a['id'] - $b['id']); return $result; } // 使用示例 $originalArray = [/* 你的输入数组内容 */]; $flattenedArray = flattenNestedArray($originalArray);
方案二:Laravel集合优雅实现
利用Laravel集合的递归与链式方法,更简洁地完成需求:
use Illuminate\Support\Collection; $originalArray = [/* 你的输入数组内容 */]; $flattenedArray = Collection::make($originalArray) ->recursive() // 递归展开所有嵌套层级 ->filter(function($item) { // 筛选出符合结构的目标元素 return is_array($item) && isset($item['id'], $item['level'], $item['email']); }) ->sortBy('id') // 按id升序排序 ->values() // 重置数组索引为连续数字 ->toArray(); // 转换为普通数组
两种方案最终都会输出你期望的二维数组结构,且所有元素按id排序。
内容的提问来源于stack exchange,提问作者Sherlock Holmes
相关产品推荐
相关产品推荐

