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

时间:2012-12-14 11:11:18

标签: php mysql

我必须显示商店的产品列表。我所拥有的是商店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
                )

        )

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

2 个答案:

答案 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;
}