Php 我不知道';我不理解这个数组的用法

Php 我不知道';我不理解这个数组的用法,php,arrays,symfony-1.4,Php,Arrays,Symfony 1.4,首先,我为标题道歉,我没有找到解决这个问题的好标题 我正在做一个已经存在的Symfony项目,我需要添加一些东西。所以我在读这篇文章,到了使用数组的时候,我不明白它是如何工作的 $this->categories = Doctrine_Query::create() ->from('Category c') ->leftJoin('c.Sizings s') ->where('c.level = 0'

首先,我为标题道歉,我没有找到解决这个问题的好标题

我正在做一个已经存在的Symfony项目,我需要添加一些东西。所以我在读这篇文章,到了使用数组的时候,我不明白它是如何工作的

$this->categories = Doctrine_Query::create()
            ->from('Category c')
            ->leftJoin('c.Sizings s')
            ->where('c.level = 0')
            ->orderBy('c.id ASC, s.gender ASC, s.size ASC')
            ->execute();

        $rCategories = Doctrine_Query::create()
            ->from('Category c');
        $allCategories = $rCategories->execute();

        $cat = array();
        foreach($allCategories as $c) {
              [...]
              $cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;
              [...]
所以我做了一些测试,看看如何访问值,这是:

$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;
    foreach($cat as $ca){
      print($ca['root']);
      echo '<br/>';
      foreach($ca['children'] as $child){
        print($child['root']);
      }
    }
die;
最后是:

$this->allCategories = $cat;
我将在部分中使用
$allCategories
,以显示每个类别及其子类别,然后将其包含在我的indexSuccess中

但这里是最后一点,我必须有一个新的专栏。该列已经在DB中,我可以使用

$c->getBrand();
我希望将它放在数组cat中,然后放在
$this->allCategories
中,这样我就可以在我在indexSuccess中使用的partial中访问它,并最终在partial中的brand列中设置值

恐怕我还不够清楚,但简而言之: 我不明白这句话:

$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;
我希望在数组$cat中有一个新参数,并在通过将它赋给indexsuccess之后访问这个新值

$this->allCategories = $cat;
我想知道如何访问新值

我希望我足够清楚,
感谢您花时间阅读此文章。

首先,由于您没有为
$c
包含任何代码,因此很难理解它实际包含的内容。但简而言之,
$c
是某种类的实例

它很可能是这样产生的:

$c = new someSortOfClass;
如果您签出了
someSortOfClass
的代码,您会发现
getRootId()
getId()
作为其定义中的方法。它们做什么取决于代码,因为没有代码可供查找-我假设它们返回某种值,可以是
索引
数组

接下来会发生什么-在多维数组中创建新元素,并将整个实例
$c
分配给第四级
'root'
数组键:

$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;
如果您创建了一个
var\u dump($cat)
,您将看到这个数组的整个树,然后可以了解它的多维性是如何工作的

本质上-php数组可以有任何类型的值,包括其他数组,因此:

$array = Array('key1': 'string', 'key2': Array('child_key1': 2));
print $array['key2']['child_key1']; // 2

是这样一个数组的示例。

我建议您使用
var\u dump
print\u r
变量查看其结构。这可能有助于分析代码。您是否理解
$cat['foo']['children']['bar']['root']=$c?或者多维关联数组对你来说是个谜吗?var\u dump或print\r给出了太多的行@不,是这个我不明白。我对多维数组知之甚少。但我唯一想做的是对$cat有第三个值,即$c->getBrand()可能的副本。阅读这篇文章,了解数组的介绍。我刚刚编辑了我的文章,并包含了导致var$c的代码。实际上,
getRootId
getRoot
都在Category类中。Symfony为数据库的每个表中的每个列创建所有
get[column]
。在这里,它为表类别的每一列创建所有
get
。因此,
getRootId
返回列“rootId”的值,这是一个
int
,这就是为什么我不理解为什么它显示与ID相关的字符串而不是ID本身。所以我猜
doctor\u Query
所做的是抽象数据库连接。在这种情况下,无论它返回什么,都始终是一个字符串。您必须自己对返回的值进行类型转换@熊猫先生
$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;
$array = Array('key1': 'string', 'key2': Array('child_key1': 2));
print $array['key2']['child_key1']; // 2