首先,我为标题道歉,我没有找到一个好问题。
我正在研究已经存在的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;
我想知道如何访问新值。
我希望我足够清楚, 感谢您抽出宝贵时间阅读本文。
答案 0 :(得分:0)
首先,由于您不包含$c
的任何代码,因此很难理解它实际包含的内容。但简而言之,$c
是某种类的实例。
很可能它以这种方式存在:
$c = new someSortOfClass;
如果您检查了someSortOfClass
的代码,则会在其定义中找到getRootId()
和getId()
作为方法。它们的作用取决于代码,因为没有代码可以查看 - 我假设它们返回的某种值可以是key
或index
到{{1} }。
接下来会发生什么 - 在多维数组中创建新元素,并将整个实例array
分配给第4级$c
数组键:
'root'
如果您制作了$cat[$c->getRootId()]['children'][$c->getId()]['root'] = $c;
,您会看到此数组的整个树,然后可以了解它的多维度是如何工作的。
本质上 - php数组可以包含任何类型的值,包括其他数组,所以这个:
var_dump($cat)
是这种数组的一个例子。