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倍です.1つは$this->root[1][1]['/Pages']配列をチェックしてキーを通過しますか? そうでない場合、その動作は何ですか?そして2配列をチェックするとき、それは上位4つのキーだけを通過しますか、それともすべてのサブキーを通過しますか?

誰かが私を助けたり、非常にありがたい学習教材にリンクしてくれたりしたら、ありがとう!

4

1 に答える 1

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 は配列をトラバースする必要なく値を返すことができます。

Arrays に関する PHP manaul には、多くの有益な情報があります。

于 2012-08-23T01:01:22.607 に答える