你好我正在学习PHP并在$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个键或所有子键吗?
如果有人可以帮助或链接我一些非常感谢的学习材料,谢谢!
答案 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就可以返回值而无需遍历数组。
中有很多好消息