/ / Lavorare con array a più livelli: php, matrici

Lavorare con matrici a più livelli: php, matrici

ciao sto imparando PHP e mi sono imbattuto in questo array multi-livello dopo aver usato print_r on $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
)
)
)
)

Ho una domanda sul comportamento dell'utilizzo di array a più livelli, voglio usare questa funzione

$pages = $this->pdf_resolve_object($this->c, $this->root[1][1]["/Pages"]);

e $this->root[1][1]["/Pages"] che credo sia usato per controllare la matrice per queste chiavi e se esiste allora usare come variabile per pdf_resolve_object

quindi la mia domanda è di 2 volte, si fa uno $this->root[1][1]["/Pages"] controllare la matrice e passa attraverso i tasti? se no, qual è il suo comportamento? e 2 quando controlla la matrice passa attraverso solo i primi 4 tasti o tutti i sottochiavi?

Se qualcuno può aiutarmi o collegarmi ad un materiale didattico che sarebbe molto apprezzato, grazie!

risposte:

2 per risposta № 1

1) Non controlla la presenza dei tasti dell'array - piuttosto assume che quelle chiavi esistono già e passa il valore nella funzione. Se nessuna delle chiavi non esistesse, PHP emetterebbe un E_NOTICE per l'effetto di Notice: Undefined index: che la chiave non è stata trovata. Per controllarli richiederebbe una chiamata a isset() o array_key_exists() piace:

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

2) Non è necessario per iterare fino atrova le chiavi. Conoscere i tasti dell'array significa già che è possibile accedervi direttamente senza iterazioni. In memoria, PHP ha memorizzato le chiavi dell'array e le posizioni di memoria dei valori a cui puntano. Pertanto, con la sola chiave, PHP può restituire il valore senza dover attraversare la matrice.

Ci sono molte buone informazioni nel Manaul PHP su array