5

你好,我正在学习 PHP,并在使用 print_r 后遇到了这个多级数组$this->root

 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 个键还是所有子键?

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

4

1 回答 1

2

1)它不检查数组键的存在——而是假设这些键已经存在并将值传递给函数。如果任何键不存在,PHP 会发出一个提示E_NOTICENotice: 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 手册中有很多关于数组的好信息

于 2012-08-23T01:01:22.607 回答