0

所以我有我的查询,它的返回结果正如预期的一样膨胀,除了今天我的设计师在扳手中通过。这似乎让我有点偏离了我的游戏,也许是因为我累了谁知道呢,反正..

我要创建一个 3 层阵列

主要类别、子类别(每个主要类别可以有多个)以及每个子类别的项目列表,可以是 1 到 100 个项目。

我尝试过 foreach、while、for 循环。所有通常都从$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
                      ),
             ),
)
4

3 回答 3

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'];
于 2012-09-09T13:53:17.267 回答
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");
于 2012-09-09T13:46:26.857 回答
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);

?>
于 2012-09-09T13:56:07.870 回答