-1

ストアの製品リストを表示する必要があります。私が持っているのはストア 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
                )

        )

) 申し訳ありませんが、これがばかげたことのように思えますが、この配列形式は私の目的に本当に役立ちます。ご清聴ありがとうございました。

4

2 に答える 2

1

これに似た形式にするには、データを自分で処理する必要があります。通常、行をループして、目的の形式の配列に変換できます。

于 2012-12-14T11:19:27.340 に答える
0

あなたが期待するように出力を得るために1つの素晴らしい関数(オプション)があります.. (すなわち)array_combine()を使用して

次のように使用します。

$arrayValue として 1 つの配列で結果を取得し、次のように配列キーを持つ arrayKey として 1 つの新しい配列を作成します。

    $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;
}
于 2012-12-14T11:23:22.597 に答える