使用MySQL for PHP获取适当的数组

使用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

我必须显示一个商店的产品清单。我所拥有的只是一个商店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
                )

        )
) 我很抱歉,如果这似乎是一个愚蠢的事情,但这种数组格式将真正帮助我的事业。
谢谢大家的关注。

您需要自己处理数据,将其转换为类似于此的格式。通常,您可以在行中循环,并将其转换为所需格式的数组。

有一个很好的函数(选项)可以按预期获得输出(即)使用数组_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查询来完成吗?