我不明白这个阵列的用法

时间:2013-05-16 10:21:41

标签: php arrays symfony-1.4

首先,我为标题道歉,我没有找到一个好问题。

我正在研究已经存在的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;

显示:

Tennis Racket //This is the main category
Thunder       //And this is a subcategory

首先,为什么不是ID而不是Names?

这段代码究竟意味着什么?

$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;

最后是:

$this->allCategories = $cat;

我将在部分中使用$allCategories以显示每个类别及其子类别,然后将其包含在我的indexSuccess中。

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

在actionclass中访问它的值
$c->getBrand();

我想在数组cat中然后在$this->allCategories中使用它,所以我可以在我在indexSuccess中使用的partial中访问它,最后在我在部分中使用的列品牌中设置值

我担心我不够清楚,但简而言之: 我不明白这一行:

$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;

我想在数组$ cat中有一个新参数,并在通过

将其提供给indexsuccess后访问此新值
$this->allCategories = $cat;

我想知道如何访问新值。

我希望我足够清楚, 感谢您抽出宝贵时间阅读本文。

1 个答案:

答案 0 :(得分:0)

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

很可能它以这种方式存在:

$c = new someSortOfClass;

如果您检查了someSortOfClass的代码,则会在其定义中找到getRootId()getId()作为方法。它们的作用取决于代码,因为没有代码可以查看 - 我假设它们返回的某种值可以是keyindex到{{1} }。

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

'root'

如果您制作了$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c; ,您会看到此数组的整个树,然后可以了解它的多维度是如何工作的。

本质上 - php数组可以包含任何类型的值,包括其他数组,所以这个:

var_dump($cat)

是这种数组的一个例子。