2016-05-21 46 views
1

有一个小问题。为什么这段代码只返回一个包?多维数组PHP具有相同的名称

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

当我改变名称:正确packages_1,packages_2,packages_3它们的输出,但是当我给他们的同名它只能输出一个包。有什么办法可以解决这个问题吗?

+1

数组索引必须有不同的名称,否则会被覆盖,你将只能得到最后一个。 来自php doc - 如果数组声明中的多个元素使用相同的密钥,则只有最后一个元素被覆盖。 [array](http://php.net/manual/en/language.types.array.php) – UserName

+0

给他们每个人一个数字还是有其他选择是不是一个肮脏的修复? – Jur

+1

我想你不需要包名(如果它们都是一样的话),在这种情况下:只要放下它? (即从这些行中删除''package'=>') – ccKep

回答

5

这是因为PHP中的关联数组是map,所以每个键在同一个数组中必须是唯一的。您可以使用以下方法解决此问题:

  1. 为每个package键赋予一个唯一的名称(就像您在问题中已经提到的那样)。

例如:

'packages' => [ 
    'package_1' => [ 
     'height' => '100', 
     'width' => '200', 
    ], 
    'package_2' => [ 
     'height' => '1300', 
     'width' => '2040', 
    ], 
    'package_3' => [ 
     'height' => '1200', 
     'width' => '2020', 
    ], 
] 
  • 省略键完全和你必须使用索引来访问它们。
  • 例如:

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

    并访问值:

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

    非常感谢! – Jur

    相关问题