在多维数组PHP中获取父项的子项

时间:2012-11-15 02:34:58

标签: php multidimensional-array

我有一个多维数组(如下所示)。我想要做的是找到一个特定的值,如果该值有子项,则只列出那些子项。因此,例如,如果我正在搜索slug的“test”,那么所有“test”的孩子都会在页面上列出。 “Test2”没有孩子,所以没有列出。如果我正在搜索“/ test / sub”(slug),并且由于它有孩子,我想要显示所有孩子(例如“sh”,“rd”,“co”)。我很遗憾如何开始这个,所以非常感谢任何帮助。

    Array
    (
     [test] => Array
      (
        [children] => Array
         (
           [2] => Array
             (
               [parent] => 4
               [title] => Sub
               [slug] => test/sub/
               [id] => 2
               [children] => Array
               (
                 [3] => Array
                 (
                   [parent] => 2
                   [title] => sh 
                   [slug] => test/sub/sh
                   [id] => 3
                 )
                 [27] => Array
                 (
                   [parent] => 2
                   [title] => RD
                   [slug] => test/sub/rd
                   [id] => 27
                 )
                 [145] => Array
                 (                                     
                   [parent] => 2
                   [title] => cO
                   [slug] => test/sub/co
                   [id] => 145
                 )
               )
            )
            [8] => Array
            (
              [parent] => 4
              [title] => sub2
              [slug] => test/sub2
              [id] => 8
            )
            [19] => Array
            (
              [parent] => 4
              [title] => sub3
              [slug] => test/sub3
              [id] => 19
              [children] => Array
              (
                [20] => Array
                (
                 [parent] => 19
                 [title] => child1
                 [slug] => test/sub3/child1
                 [id] => 20
                )
                [21] => Array 
                (
                 [parent] => 19     
                 [title] => child2
                 [slug] => test/sub3/child2                                                                                          [id] => 21
                 )
               )
            )

1 个答案:

答案 0 :(得分:1)

确定。我有办法解决这个问题,但我不确定它是否最有效率。假设查询数据库后得到的对象是$ anObject。所以我们会这样做,

for($i = 0;$i < 50;$i++){
if($anObject->test->children[$i]){
for($j = 0;$j < 200;$j++){
$slug = $anObject->test->children[$i]->$j->slug;
echo $slug;
}
}}

基本上,我正在检查$ i的特定值是否存在特定的对象,然后查看它是否具有特定值$ j的值。如果知道整数的范围,则可以更改这些值。当我们得到它时,我们在$ slug变量中获取它,然后在该部分中添加一些过程来使用该值。

如果有任何帮助,请告诉我。