2012-09-09 48 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); 

?> 
相关问题