2012-09-09 44 views
0

所以,我有我的查詢,其返回結果是希望所有的膨脹,今天除了我的設計師。這似乎是我丟了我的比賽了一下,也許它的原因進出口累誰知道,反正..PHP MySQL的一個扳手,通過建立一個3層的多維數組

我創建一個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 
        ), 
      ), 
) 

回答

2

事情是這樣的:

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']; 
2

事情是這樣的....

$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"); 
+0

確實類似的東西,但主要類別在我的情況可以說是相當大的和動態的,也可以這樣子類別,每有上市,並將其工作到一個源自mysql查詢的循環中,這是什麼讓我在此刻被打敗。 – chris

+0

然後我懷疑你需要按照@Ninsuo的建議去做,並手動檢查這個鍵是否存在,如果沒有將它設置爲數組,然後填充數組。 – Basic

0

如果我理解正確的話,你要取幾個分貝關係到一個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); 

?> 
相關問題