2017-02-01 4 views
1

Ist es möglich, das associate Array innerhalb des gleichen assoziativen Arrays zu erhalten? Zum Beispiel:PHP - Referenz assoziatives Array innerhalb desselben

<?php 
$config = [ 
    'uri' => [ 
     'base_url' => $_SERVER['HTTP_HOST'], // example.com 
     'protocol' => 'https://', 
     'url' => $config['uri']['protocol'] . $config['uri']['base_url'] // output: https://example.com 
    ] 
]; 

Offensichtlich wird das nicht funktionieren, aber Sie bekommen die Idee. Ich habe mir die PHP-Dokumente angeschaut, aber ich kann keine definitive Antwort finden. Eine Hilfe wäre willkommen - danke!

Antwort

3

eine Zwischengröße verwenden:

$base = $_SERVER['HTTP_HOST']; 
$protocol = 'https://'; 
$config = [ 
    'uri' => [ 
     'base_url' => $base, // example.com 
     'protocol' => $protocol, 
     'url' => $protocol.$base, 
    ] 
]; 

Es gibt keinen Grund, Angst zu Zwischenvariablen zu verwenden.

+0

Warum daß alle Abfälle Speicher – RiggsFolly

+0

@RiggsFolly Ist Lesbarkeit kein Grund genug? Es macht es leicht zu sehen, was der 'uri' Bereich der Konfiguration auf einen Blick enthält. Wenn ich diese Array-Deklaration sehen würde, würde ich nicht erwarten, dass später weitere Einträge hinzugefügt werden. – Paulpro

+0

@RiggsFolly Mit PHPs eingebauten Opcode - Cache verschwenden Sie nicht wirklich Speicher (wie ich es verstehe, nicht vertraut mit PHPs Opcode Cache Interna) – Scopey

2

Nicht wie Sie es getan haben, aber man kann es in zwei Schritten tun wie diese

$config = [ 
    'uri' => [ 
     'base_url' => $_SERVER['HTTP_HOST'], // example.com 
     'protocol' => 'https://' 
    ] 
]; 

$config['uri']['url'] = $config['uri']['protocol'] . $config['uri']['base_url']; 

print_r($config); 
+0

Danke @Paulpro – RiggsFolly