Php 如何从wpdb查询返回构建多维数组?
我试图从查询返回构建多维数组,但遇到了一个问题。这里有一个经过消毒的片段,与我正在尝试做的类似。我的问题是构建子阵列。有什么建议可以得到我想要的结果吗?我使用了JSON,所以它会更明显。我可以解析数组或JSONPhp 如何从wpdb查询返回构建多维数组?,php,mysql,wordpress,Php,Mysql,Wordpress,我试图从查询返回构建多维数组,但遇到了一个问题。这里有一个经过消毒的片段,与我正在尝试做的类似。我的问题是构建子阵列。有什么建议可以得到我想要的结果吗?我使用了JSON,所以它会更明显。我可以解析数组或JSON <?php // this is my query global $wpdb; $locationData = $wpdb->get_results("SELECT locations.locationID, location
<?php
// this is my query
global $wpdb;
$locationData = $wpdb->get_results("SELECT
locations.locationID,
locations.location_name,
locations.city,
locations.state,
locations.products,
locations.type,
locations.sku
");
// which returns something like
// [locationID] [location_name] [city] [state] [products] [type] [sku]
// 001 Tulsa Outlet Tulsa OK cakes chocolate 3763
// 001 Tulsa Outlet Tulsa OK cakes lemon 3765
// 001 Tulsa Outlet Tulsa OK sodas coke 4983
// 001 Tulsa Outlet Tulsa OK sodas sprite 4950
// and so on..
// I build an array to be consumed by another function that I created in my plugin:
foreach( $locationData as $key => $location ) {
$output[$row['locationID']] = array(
'locationID' => $row['locationID'],
'location_name' => $row['location_name'],
'products' => array(
// this is where my previous attempts broke down
)
);
$output[$key]['city'] = $location->city;
$output[$key]['state'] = $location->state;
}
// and the $output I need would look like this:
{
"locations" : [
{
"locationID" : "001",
"location_name" : "Tulsa Outlet",
"products" : {
"cakes" : {
"chocolate" : "3763",
"lemon" : "3765"
},
"sodas" : {
"coke" : "4983",
"sprite" : "4950"
}
},
"city" : "Tulsa",
"state" : "ok"
}
]
}
?>
这些措施应有助于:
$output = [];
foreach ($locationData as $location) {
$locId = $location->locationID;
if (empty($output[$locId])) {
$output[$locId] = [
'locationID' => $location->locationID,
'location_name' => $location->location_name,
'city' => $location->city,
'state' => $location->state,
'products' => [],
];
}
$productType = $location->products;
if (empty($output[$locId]['products'][$productType])) {
$output[$locId]['products'][$productType] = [];
}
$output[$locId]['products'][$productType][$location->type] = $location->sku;
}
不确定您使用的是-$row还是$location,所以将所有内容都更改为$location
要将$output重新索引为0索引数组,请使用数组_值