php - 将多维数组转换为二维
问题描述
我已经成功构建了一个多维数组来转储这个:
0 => array:11 [▼
"category_code" => "123"
"category_name" => "Testing"
"category_description" => "This is a test category"
19738 => array:5 [▼
"identifier" => "720368842943"
"description" => Test Description One
"count" => 4
"details" => array:2 [▼
0 => array:3 [▼
"detail_code" => "2751"
"detail_code2" => "43"
"detail_specifier" => "Detail One"
]
1 => array:3 [▼
"detail_code" => "2681"
"detail_code2" => "9"
"detail_specifier" => "Detail Two"
]
]
"prices" => array:1 [▼
"01" => "1129.00"
]
]
19739 => array:5 [▼
"identifier" => "720368844121"
"description" => "Test Description Two"
"count" => 4
"details" => array:2 [▼
0 => array:3 [▼
"detail_code" => "2751"
"detail_code2" => "43"
"detail_specifier" => "Detail One"
]
1 => array:3 [▼
"detail_code" => "2681"
"detail_code2" => "9"
"detail_specifier" => "Detail Two"
]
]
"prices" => array:1 [▼
"01" => "1490.00"
]
]
但出于我的目的,我实际上需要一个二维数组,其中一个元素是类别字段,然后每个项目及其所有信息将是另一个元素,以便我可以将其导出为行。
我怎样才能使它成为一个二维数组?
$allCategoryResult= array();
foreach($prices->categories as $category){
$categoryItem = array();
$categoryItem["category_code"] = $category->category_code;
$categoryItem["category_name"] = $category->category_name;
$categoryItem["category_desc"] = $category->category_desc;
foreach($category->skus as $sku){
$skuItem = array();
$skuItem["identifier"] = $sku->sku_info->identifier;
$skuItem["description"] = $sku->sku_info->item->description;
$skuItem["count"] = $sku->sku_info->item->item_type->count;
$skuItem["details"] = array();
foreach ($sku->sku_info->details as $details) {
$detailsItem = array();
$detailsItem["detail_code"] = $details->detail_code;
$detailsItem["detail_code2"] = $details->detail_code2;
$detailsItem["detail_specifier"] = $details->detail_specifier;
$skuItem["details"][] = $detailsItem;
}
$skuItem["prices"] = get_object_vars($sku->prices);
$itemCode = $sku->sku_info->item->item_code;
$categoryItem[$itemCode] = $skuItem;
}
$allCategoryResult[] = $categoryItem;
}
预期输出示例
0 => array: [▼
"category_code" => "123"
"category_name" => "Testing"
"category_description" => "This is a test category"
Array:[
"item-code" => 19738
"identifier" => "720368842943"
"description" => Test Description One
"count" => 4
"detail_code" => "2751"
"detail_code2" => "43"
"detail_specifier" => "Detail One"
"detail_code" => "2681"
"detail_code2" => "9"
"detail_specifier" => "Detail Two"
"01" => "1129.00"
]
]
解决方案
您需要做的就是不要将其他详细信息嵌套sku
在单独的数组中。只需将其推送到skuitems
数组如下所示
$allCategoryResult= array();
foreach($prices->categories as $category){
$categoryItem = array();
$categoryItem["category_code"] = $category->category_code;
$categoryItem["category_name"] = $category->category_name;
$categoryItem["category_desc"] = $category->category_desc;
foreach($category->skus as $sku){
$skuItem = array();
$skuItem["identifier"] = $sku->sku_info->identifier;
$skuItem["description"] = $sku->sku_info->item->description;
$skuItem["count"] = $sku->sku_info->item->item_type->count;
$skuItem["details"] = array();
foreach ($sku->sku_info->details as $details) {
$detailsItem = array();
$skuItem["detail_code"] = $details->detail_code;
$skuItem["detail_code2"] = $details->detail_code2;
$skuItem["detail_specifier1"] = $details->detail_specifier1;
$skuItem["detail_specifier2"] = $details->detail_specifier2;
}
array_push($skuItem,$sku->prices);
$itemCode = $sku->sku_info->item->item_code;
$categoryItem[$itemCode] = $skuItem;
}
$allCategoryResult[] = $categoryItem;
}
PS:数组键应该是唯一的,所以你不能有两个用相同名称“detail_specifier”调用的键,所以在这里做了相应的修改,但是 YMMV。
推荐阅读
- oracle - 查询特定时间
- corda - 访问单个或一小组现金状态时计划的流程失败
- dart - Flutter,从凸起按钮的 onPressed 调用 FutureBuilder 不会调用 builder 属性
- amazon-web-services - Cognito 注册时的电话号码格式无效
- sql - 使用 Oracle 创建过程
- sql - 谁知道2079年6月6日的SQL问题?
- python - Python在读取表格数据文件时给出超出范围的索引
- java - OpenJFX:(Gluon)SDK 与 Maven 依赖项
- excel - VBA替换工作表中除第一行外的所有内容
- activemq - ActiveMQ HA 故障转移