同名多维数组PHP

同名多维数组PHP,php,multidimensional-array,Php,Multidimensional Array,我有个小问题。为什么这段代码只返回一个包 # Packages data 'packages' => [ 'package' => [ 'height' => '100', 'width' => '200', ], 'package' => [ 'height' => '1300', 'width' => '2040', ], 'package' =&

我有个小问题。为什么这段代码只返回一个包

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

当我将名称更改为:packages_1、packages_2、packages_3时,它们输出正确,但当我给它们相同的名称时,它只输出一个包。有什么办法可以解决这个问题吗?

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

  • 为每个
    键指定一个唯一的名称(就像您在问题中已经提到的那样)
  • 例如:

    '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',
        ],
    ]
    
  • 完全省略键,您将不得不使用索引访问它们 例如:

    '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'] 
    

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

  • 为每个
    键指定一个唯一的名称(就像您在问题中已经提到的那样)
  • 例如:

    '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',
        ],
    ]
    
  • 完全省略键,您将不得不使用索引访问它们 例如:

    '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'] 
    

    数组索引必须有不同的名称,否则它们将被覆盖,并且只能得到最后一个。从php文档-如果数组声明中的多个元素使用同一个键,那么只有最后一个元素会被使用,因为所有其他元素都会被覆盖。给他们每个人一个数字是一种肮脏的修复还是有其他的选择?我想你不需要包名(如果它们都是一样的话),在这种情况下:干脆放弃它吧?(即从这些行中删除
    'package'=>
    )使用数字数组索引。删除“包”。'包装“=>['0'=>['高度'=>'100','宽度'=>'200',]等。当添加到数组中时,索引值将增加1@UserName是的,这将是一个更好的解决方案。谢谢!数组索引必须有不同的名称,否则它们将被重写,并且您将只获得最后一个。从php文档-如果数组声明中的多个元素使用相同的键,那么将只使用最后一个,与所有其他元素一样覆盖。给他们每个人一个数字是一个肮脏的修复还是有其他选项?我想你不需要包名(如果它们都一样的话),在这种情况下:只需删除它?(即从这些行中删除
    'package'=>
    )使用数字数组索引。删除“package”。'packages'=>['0'=>['height'=>'100','width'=>'200',]等。当添加到数组索引值时,这些值将增加1@UserName是的,那将是一个更好的解决方案。谢谢!