使用多级数组

时间:2012-08-23 00:57:32

标签: php arrays

你好我正在学习PHP并在$this->root

上使用print_r后遇到了这个多级数组
 Array ( 
    [0] => 9 
    [obj] => 3562 
    [gen] => 0 
    [1] => Array ( 
        [0] => 5 
        [1] => Array ( 
            [/AcroForm] => Array ( 
                [0] => 8 
                [1] => 3563 
                [2] => 0 
                ) 
            [/Metadata] => Array ( 
                [0] => 8 
                [1] => 3559 
                [2] => 0 
                ) 
            [/PageLabels] => Array ( 
                [0] => 8 
                [1] => 3389 
                [2] => 0 
                ) 
            [/Pages] => Array ( 
                [0] => 8 
                [1] => 3392 
                [2] => 0 
                ) 
            [/Type] => Array ( 
                [0] => 2 
                [1] => /Catalog 
                ) 
            ) 
        ) 
    ) Array ( 
        [0] => 9 
        [obj] => 8 
        [gen] => 0 
        [1] => Array ( 
            [0] => 5 
            [1] => Array ( 
                [/Type] => Array ( 
                    [0] => 2 
                    [1] => /Catalog 
                    ) 
                [/Pages] => Array ( 
                    [0] => 8 
                    [1] => 1 
                    [2] => 0 
                    ) 
                [/OpenAction] => Array ( 
                    [0] => 6 
                    [1] => Array ( 
                        [0] => Array ( 
                            [0] => 8 
                            [1] => 3 
                            [2] => 0 
                            ) 
                        [1] => Array ( 
                            [0] => 2 
                            [1] => /FitH 
                            ) 
                        [2] => Array ( 
                            [0] => 0 
                            ) 
                        ) 
                    ) 
                [/PageLayout] => Array ( 
                    [0] => 2 
                    [1] => /OneColumn 
                    ) 
                ) 
            ) 
        ) 

我对使用多级数组的行为有疑问,我想使用这个函数

$pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
我认为

$this->root[1][1]['/Pages']用于检查数组中是否存在这些键,如果存在,则将其用作pdf_resolve_object的变量

所以我的问题是2倍,一个是$this->root[1][1]['/Pages']检查数组并通过密钥?如果不是它的行为是什么? 2,当它检查数组时,它只通过前4个键或所有子键吗?

如果有人可以帮助或链接我一些非常感谢的学习材料,谢谢!

1 个答案:

答案 0 :(得分:2)

1)它不检查是否存在数组键 - 而是假定这些键已经存在并将值传递给函数。如果任何密钥不存在,PHP将发出E_NOTICE Notice: Undefined index:的效果,即找不到密钥。要检查这些内容,需要致电isset()array_key_exists(),如:

if (isset($this->root[1][1]['/Pages'])) {
  $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
}

2)没有必要迭代查找密钥。了解数组键已经意味着可以直接访问它们而无需迭代。在内存中,PHP已经存储了数组键和它们指向的值的内存位置。因此,仅使用密钥,PHP就可以返回值而无需遍历数组。

PHP manaul on Arrays

中有很多好消息