簡體   English   中英

PHP MySQL構建3層多維數組

[英]PHP MySQL building a 3 Tier multi dimensional array

因此,我得到了我的查詢,它的返回結果符合預期,但今天,除了我的設計師用扳手外,其他所有東西都在膨脹。 看來這似乎使我無法參加比賽,也許是因為無論如何我都會感到疲倦。

我要創建一個3層陣列

主要類別,子類別(每個主要類別可以有多個),以及每個子類別的項目列表,可以是1到100個項目。

我已經嘗試過foreach,而對於循環。 通常都以$final = array(); 然后是下面的循環

試圖建立像這樣的數組:

$final[$row['primary]][$row['sub']][] = $row['item]
$final[$row['primary]][$row['sub']] = $row['item]

我嘗試將它們定義為各自的數組以使用array_push() 以及其他各種戰術,我都慘遭失敗。 我需要一個有主見的人來幫助我。 從哪種類型的循環最適合我的需要,到如何構造陣列以按計划進行擴展。

期望的結果是

array(
   primary = array
             (
                sub = array
                      (
                        itemA,
                        itemB,
                        itemC
                      ),
                sub = array
                      (
                        itemA,
                        itemB,
                        itemC
                      ),
             ),
   primary = array
             (
                sub = array
                      (
                        itemA,
                        itemB,
                        itemC
                      ),
                sub = array
                      (
                        itemA,
                        itemB,
                        itemC
                      ),
             ),
)

像這樣...

$final = 
array(
    'Primary1'=>array(
        'Sub1'=>array("Item1", "Item2"),
        'Sub2'=>array("Item3", "Item4")
    ),
    'Primary2'=>array(
        'Sub3'=>array("Item5", "Item6"),
        'Sub4'=>array("Item7", "Item8")
    ),
);

您可以使用array_push做到這一點,但這並不是那么容易,因為您真的想要一個關聯數組,而array_push不能很好地與鍵配合使用。 您當然可以使用它向子元素添加項目

array_push($final['Primary1']['Sub1'], "Some New Item");

在處理您的請求期間類似這樣的內容:

if (!array_key_exists($row['primary'], $final)) {
    $final[$row['primary']] = array();
}
if (!array_key_exists($row['sub'], $final[$row['primary']])) {
    $final[$row['primary']][$row['sub']] = array();
}
$final[$row['primary']][$row['sub']][] = $row['item'];

如果我對您的理解正確,則希望將幾個數據庫關系獲取到一個PHP數組中。

這是一些示例代碼,您可以如何解決該問題:

<?php

$output = array();

$i = 0;
// DB Query
while($categories) { // $categories is an db result

    $output[$i] = $categories;

    $ii = 0;
    // DB Query
    while($subcategories) { // $subcategories is an db result

        $output[$i]['subcategories'][$ii] = $subcategories;

        $iii = 0;
        // DB Query
        while($items) { // $items is an db result

            $output[$i]['subcategories'][$ii]['items'][$iii] = $items;

            $iii++;
        }
        $ii++;
    }
    $i++;
}

print_r($output);

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM