具有相同名称的Multidemensional Array PHP

时间:2016-05-21 20:49:53

标签: php multidimensional-array

得到一个小问题。为什么这段代码只返回一个包?

# 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 个答案:

答案 0 :(得分:5)

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

  1. 为每个package个密钥指定一个唯一的名称(就像您在问题中已经提到过的那样)。
  2. 例如:

    'packages' => [
        'package_1' => [
            'height' => '100',
            'width' => '200',
        ],
        'package_2' => [
            'height' => '1300',
            'width' => '2040',
        ],
        'package_3' => [
            'height' => '1200',
            'width' => '2020',
        ],
    ]
    
    1. 完全省略密钥,您必须使用索引访问它们。
    2. 例如:

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

      并访问值:

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