我必须显示商店的产品列表。我所拥有的是商店ID,我必须关联6个表才能获得。 我使用的查询是正确地获取记录但不是所需的数组格式。 我不知道我想要的数组格式是否可行。 我的SQL如下:
SELECT DISTINCT KR.knifename,KR.id,CAT.categoryname,KR.knifecode FROM assocknives AS AK
INNER JOIN kniferegisters AS KR ON KR.id = AK.kniferegister_id
INNER JOIN categories AS CAT ON CAT.id = KR.sub_category_id
INNER JOIN stores AS STR ON STR.id = AK.store_id
INNER JOIN brands AS BRND ON BRND.id = AK.brand_id
INNER JOIN assocknifeprices AS AKP ON AKP.assocknife_id = AK.id
WHERE AK.store_id='.$storeId.' AND BRND.is_active ="1" AND STR.is_active ="1"
这给了我数组
Array
(
[0] => Array
(
[KR] => Array
(
[knifename] => xxx
[id] => xxx
[knifecode] => xxx
)
[CAT] => Array
(
[categoryname] => xxx
)
)
[1] => Array
(
[KR] => Array
(
[knifename] => xxx
[id] => xxx
[knifecode] => xxx
)
[CAT] => Array
(
[categoryname] => xxx
)
)
)
结果是正确的,但我希望将其作为
Array
(
[categoryname1] => Array
(
[0] => Array
(
[knifename] => xxx
[id] => xxx
[knifecode] => xxx
)
[1] => Array
(
[knifename] => xxx
[id] => xxx
[knifecode] => xxx
)
)
[categoryname2] => Array
(
[0] => Array
(
[knifename] => xxx
[id] => xxx
[knifecode] => xxx
)
[1] => Array
(
[knifename] => xxx
[id] => xxx
[knifecode] => xxx
)
)
) 我很抱歉如果这似乎是一件愚蠢的事情,但这种数组格式将真正有助于我的事业。 谢谢你的关注。
答案 0 :(得分:1)
您需要自己处理数据以使其成为与此类似的格式。通常,您可以遍历行并将其转换为所需格式的数组。
答案 1 :(得分:0)
有一个很好的函数(选项)来获得你想要的输出.. (即)使用array_combine()
使用如下,
将结果作为$ arrayValue获取到一个数组中,并使用数组键创建一个新数组作为arrayKey,如下所示
$arrayValue = SQL RESULT
$arrayKey = array('categoryname1','categoryname2',....)
$expectedArrayResult = array_combine($arrayKey, $arrayValue)..
print_r($expectedArrayResult);
如果您需要附加相应的产品,请使用以下功能,
您需要使用键传递类别,并使用类别键
传递值数组 function combine_assoc($map, $values) {
$output = array();
foreach($map as $key => $values) {
if(!array_key_exists($key, $value)) return FALSE;
$output[$value] = $values[$key];
}
return $output;
}