使用MySQL for PHP获取适当的数组
我必须显示一个商店的产品清单。我所拥有的只是一个商店id,我必须关联6个表才能得到它。 我使用的查询正在正确地获取记录,但不是所需的数组格式。 我不知道我想要的数组格式是否可行。 我的SQL如下所示:使用MySQL for PHP获取适当的数组,php,mysql,Php,Mysql,我必须显示一个商店的产品清单。我所拥有的只是一个商店id,我必须关联6个表才能得到它。 我使用的查询正在正确地获取记录,但不是所需的数组格式。 我不知道我想要的数组格式是否可行。 我的SQL如下所示: SELECT DISTINCT KR.knifename,KR.id,CAT.categoryname,KR.knifecode FROM assocknives AS AK INNER JOIN knife
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
)
)
)
我很抱歉,如果这似乎是一个愚蠢的事情,但这种数组格式将真正帮助我的事业。
谢谢大家的关注。您需要自己处理数据,将其转换为类似于此的格式。通常,您可以在行中循环,并将其转换为所需格式的数组。有一个很好的函数(选项)可以按预期获得输出(即)使用数组_combine() 使用方法如下: 将一个数组中的结果作为$arrayValue获取,并创建一个新数组作为arrayKey,数组键如下所示,
$arrayValue = SQL RESULT
$arrayKey = array('categoryname1','categoryname2',....)
$expectedArrayResult = array_combine($arrayKey, $arrayValue)..
print_r($expectedArrayResult);
如果您需要随附相应的产品,请按以下功能使用:
您需要使用键传递category,也需要使用category键传递值数组
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;
}
删除表声明后的
作为AK
s。如果您想在不将处理程序返回结果的情况下命名表,只需将删除为,您的查询将保持正常功能。当然,数据库中的数据不是以这种格式提供的。它正在被一些你没有显示的代码处理…@AleksG我尝试使用GroupBy和其他一些函数,但它们没有达到目的,因为它们无法获取所有的产品。我尝试了其他方法,也像尝试将类别名称指定为键,但没有用。我是SO的老用户,我知道我应该首先自己尝试。@deceze上述数组作为查询的结果从数据库提交。这不会将类别名称与其产品精确关联。编辑了我的答案。。请检查一下。。。。如果不是你所期望的。。那么请简要地给我解释一下。。类别与产品的关系如何?如何在不同的数组中获取类别名称?使用一个查询获取类别名称和键,并将其放在单独的数组中Anx@Vinoth,但我希望在单个查询中这样做。我也有其他选项。类别名称可以不同,因此我需要按类别收集它们。您可以将数组设置为模板,然后遍历行并将数据添加到模板数组中。它解决了您的问题。意味着它不能通过单独操作SQL查询来完成吗?