2016-05-21 19 views
1

Ich habe eine kleine Frage. Warum gibt dieser Code nur ein Paket zurück?Multidemensional Array PHP mit dem gleichen Namen

# Packages data 
'packages' => [ 
    'package' => [ 
     'height' => '100', 
     'width' => '200', 
    ], 
    'package' => [ 
     'height' => '1300', 
     'width' => '2040', 
    ], 
    'package' => [ 
     'height' => '1200', 
     'width' => '2020', 
    ], 
] 

Wenn ich die Namen zu ändern: packages_1, packages_2, packages_3 sie korrekt ausgegeben werden, aber wenn ich ihnen den gleichen Namen geben tut es ein Paket nur dann ausgegeben. Gibt es eine Möglichkeit, dies zu lösen?

+1

Array-Indizes müssen unterschiedliche Namen haben, sonst sind sie außer Kraft gesetzt werden, und Sie werden nur die letzte zu bekommen. Von PHP Doc - Wenn mehrere Elemente in der Array-Deklaration den gleichen Schlüssel verwenden, wird nur der letzte verwendet, da alle anderen überschrieben werden. [array] (http://php.net/manual/en/language.types.array.php) – UserName

+0

Ist es eine schmutzige Lösung, jedem von ihnen eine Nummer zu geben oder gibt es andere Möglichkeiten? – Jur

+1

Ich denke, dass Sie die Paketnamen nicht benötigen (wenn sie alle gleich sind), in diesem Fall: Einfach fallen lassen? (dh. Entfernen Sie ''Paket' =>' von diesen Zeilen) – ccKep

Antwort

5

Es ist, weil das assoziative Array in PHP ein map ist, so dass jeder Schlüssel innerhalb des gleichen Arrays eindeutig sein muss. Sie können diese über einen Link die diese Methode beheben:

  1. jeden der package Schlüssel Geben Sie einen eindeutigen Namen (wie Sie bereits in Ihrer Frage erwähnt haben).

Zum Beispiel:

'packages' => [ 
    'package_1' => [ 
     'height' => '100', 
     'width' => '200', 
    ], 
    'package_2' => [ 
     'height' => '1300', 
     'width' => '2040', 
    ], 
    'package_3' => [ 
     'height' => '1200', 
     'width' => '2020', 
    ], 
] 
  1. Auslassen der Schlüssel vollständig und Sie werden sie Indizes verwenden zugreifen müssen.

Zum Beispiel:

'packages' => [ 
    [ 
     'height' => '100', 
     'width' => '200', 
    ], 
    [ 
     'height' => '1300', 
     'width' => '2040', 
    ], 
    [ 
     'height' => '1200', 
     'width' => '2020', 
    ], 
] 

und die Werte für den Zugriff auf:

$myvariable['packages'][0]['height'] 
+1

Vielen Dank! – Jur

Verwandte Themen