php - 创建并填充多个维度的关联数组
问题描述
我目前正在尝试创建一个具有两个维度的关联数组,我认为这个问题的解决方案可以解决具有更多维度的数组的问题。
我使用如下所示的 API 恢复数据:
{
"item_id": "89",
"name": "Confiture de Myrtilles",
"product_id": "737",
"meta_key": "vmm_warehouse_sg_10783",
"meta_value": "0"
},
{
"item_id": "89",
"name": "Confiture de Myrtilles",
"product_id": "737",
"meta_key": "vmm_warehouse_sg_10782",
"meta_value": "0"
},
{
"item_id": "91",
"name": "Poires Guyot (bio)",
"product_id": "690",
"meta_key": "_backorders",
"meta_value": "no"
},
{
"item_id": "91",
"name": "Poires Guyot (bio)",
"product_id": "690",
"meta_key": "_sold_individually",
"meta_value": "no"
},
我只想创建一个这样的数组:
array[item_id->[meta_key->meta_value]]
所以我必须恢复 item_id 它将具有第二个数组的作用,然后在这个数组中放入相关的 meta_key 和 meta_value。
因此,例如,我将有一个这样的数组:
产品[89]["vmm_warehouse_sg_10783"->"0" "vmm_warehouse_sg_10782"->"0"]
还有一个像这样:
产品[91][........]
最后,我将有一个像这样的最终数组:
Products [ [89]->{"vmm_warehouse_sg_10783"->"0","vmm_warehouse_sg_10782"->"0"}
[91]->{.....}]
我已经尝试过一些东西,但我只是一个初学者,我没有找到解决我问题的方法。
$Products = $this->wpdb->get_results( $SQL_Deliveries );
//this line allow $Products to recover all data from the API
foreach ( $Products as $Product ) {
$Meta_products[] = Product->item_id;
foreach($Product as $Product_meta){
$Meta_products[$item_id]->{Product_meta->meta_key,Product_meta
->meta_value);
}
我确定我的代码中也有错误,但我真的不知道如何解决这个问题。感谢您的参与 !
解决方案
看起来你想要一个多维对象数组。
声明嵌套对象会涉及到一些麻烦。花括号也是必要的。
代码:(演示)
$products = [
(object)["item_id" => "89",
"name" => "Confiture de Myrtilles",
"product_id" => "737",
"meta_key" => "vmm_warehouse_sg_10783",
"meta_value" => "0"
],
(object)["item_id" => "89",
"name" => "Confiture de Myrtilles",
"product_id" => "737",
"meta_key" => "vmm_warehouse_sg_10782",
"meta_value" => "0"
]
];
$result = (object)[];
foreach($products as $product) {
if (!isset($result->{$product->item_id})) {
$result->{$product->item_id} = (object)[];
}
$result->{$product->item_id}->{$product->meta_key} = $product->meta_value;
}
var_export($result);
输出:
(object) array(
'89' =>
(object) array(
'vmm_warehouse_sg_10783' => '0',
'vmm_warehouse_sg_10782' => '0',
),
)
或者,要生成嵌套对象结构,您可以构建一个数组数组,然后使用json_encode()
,然后json_decode()
在结果上。
如果您想要一个数组作为输出,那是最简单的:代码:(演示)
$products = [
(object)["item_id" => "89",
"name" => "Confiture de Myrtilles",
"product_id" => "737",
"meta_key" => "vmm_warehouse_sg_10783",
"meta_value" => "0"
],
(object)["item_id" => "89",
"name" => "Confiture de Myrtilles",
"product_id" => "737",
"meta_key" => "vmm_warehouse_sg_10782",
"meta_value" => "0"
],
(object)["item_id" => "91",
"name" => "Poires Guyot (bio)",
"product_id" => "690",
"meta_key" => "_backorders",
"meta_value" => "no"
],
(object)["item_id" => "91",
"name" => "Poires Guyot (bio)",
"product_id" => "690",
"meta_key" => "_sold_individually",
"meta_value" => "no"
]
];
$result = [];
foreach($products as $product) {
$result[$product->item_id][$product->meta_key] = $product->meta_value;
}
var_export($result);
输出:
array (
89 =>
array (
'vmm_warehouse_sg_10783' => '0',
'vmm_warehouse_sg_10782' => '0',
),
91 =>
array (
'_backorders' => 'no',
'_sold_individually' => 'no',
),
)
推荐阅读
- javascript - Javascript:在滚动上做动画
- java - AspectJ 找不到 .raw 超类
- javascript - 如何在服务工作者中缓存之前修改响应正文?
- javascript - 如何使用解构和初始化阅读此 ES6 代码?
- c - 将 ASCII 字符串转换为二进制以添加奇偶校验
- python - 光栅源形状与给定索引不一致 1
- javascript - Mongo db数据插入问题
- xdebug - 如何修复 Homestead 上 Xdebug 的编译错误
- swt - 如何在 TEXT 小部件中捕获 PASTE
- reactjs - × 元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义