繁体   English   中英

我不明白这个数组的用法

[英]I don't understand this array usage

首先,我对标题表示歉意,但没有找到解决这个问题的好方法。

我正在一个已经存在的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中使用的局部中访问它,并最终在局部中使用的列品牌中设置值。

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

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

我想在数组$ cat中有一个新参数,并在将新值赋给indexsuccess后访问它

$this->allCategories = $cat;

我想知道如何获取新价值。

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

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

它很可能以这种方式出现:

$c = new someSortOfClass;

如果您检出someSortOfClass的代码, someSortOfClass在其定义内找到getRootId()getId()作为方法。 它们的工作取决于代码,并且由于没有代码可查找-我假设它们返回某种值,该值可以是arraykeyindex

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

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

如果您制作了var_dump($cat) ,则将看到此数组的整个树,然后可以欣赏它的多维性。

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

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

就是这样一个数组的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM