如何在PHP中保持相同的数组键

如何在PHP中保持相同的数组键,php,arrays,Php,Arrays,有人能告诉我如何在php数组中允许重复键吗?我已经阅读了所有关于这个问题的相同帖子,它没有回答我的问题 在下面的示例中,我希望传递第二个“separator”键而不重命名它 $data=[ “用户名”=>数组( '键入'=>'复选框', 'id'=>'username', “标签”=>“显示用户名字段”, “默认值”=>true, ), '分隔符'=>数组( '类型'=>'分隔符', “高度”=>“薄” ), 'heading'=>数组( 'type'=>'textarea',

有人能告诉我如何在php数组中允许重复键吗?我已经阅读了所有关于这个问题的相同帖子,它没有回答我的问题

在下面的示例中,我希望传递第二个“separator”键而不重命名它

$data=[
“用户名”=>数组(
'键入'=>'复选框',
'id'=>'username',
“标签”=>“显示用户名字段”,
“默认值”=>true,
),
'分隔符'=>数组(
'类型'=>'分隔符',
“高度”=>“薄”
),       
'heading'=>数组(
'type'=>'textarea',
“id”=>“标题”,
“标签”=>“标题文本”,
'默认'=>'',
),
'分隔符'=>数组(
'类型'=>'分隔符',
“高度”=>“薄”
), 
'占位符'=>数组(
'类型'=>'文本',
“id'=>“占位符”,
“标签”=>“占位符文本”,
'默认'=>'您的姓名',
),
];
回声';
打印(数据);

回声'数组的初始化格式错误,如下所示

$data = [
    [
        'key_name' => 'username',
        'type' => 'checkbox',
        'id' => 'username',
        'label' => 'Show Username Field',
        'default' => true,
    ],
    [
        'key_name' => 'separator',
        'type' => 'separator',
        'height' => 'thin'
    ],
    [
        'key_name' => 'heading',
        'type' => 'textarea',
        'id' => 'heading',
        'label' => 'Heading Text',
        'default' => '',
    ],
    [
        'key_name' => 'separator',
        'type' => 'separator',
        'height' => 'thin'
    ],
    [
        'key_name' => 'placeholder',
        'type' => 'text',
        'id' => 'placeholder',
        'label' => 'Placeholder Text',
        'default' => 'Your name',
    ],
];
$data=[
“用户名”=>数组(
'键入'=>'复选框',
'id'=>'username',
“标签”=>“显示用户名字段”,
“默认值”=>true,
),
“分隔符”=>数组(
排列(
'类型'=>'分隔符',
“高度”=>“薄”
),
排列(
'类型'=>'分隔符',
“高度”=>“薄”
)
),
'占位符'=>数组(
'类型'=>'文本',
“id'=>“占位符”,
“标签”=>“占位符文本”,
'默认'=>'您的姓名',
),
];
回声';
打印(数据);
回声'

数组的初始化格式错误,如下所示

$data = [
    [
        'key_name' => 'username',
        'type' => 'checkbox',
        'id' => 'username',
        'label' => 'Show Username Field',
        'default' => true,
    ],
    [
        'key_name' => 'separator',
        'type' => 'separator',
        'height' => 'thin'
    ],
    [
        'key_name' => 'heading',
        'type' => 'textarea',
        'id' => 'heading',
        'label' => 'Heading Text',
        'default' => '',
    ],
    [
        'key_name' => 'separator',
        'type' => 'separator',
        'height' => 'thin'
    ],
    [
        'key_name' => 'placeholder',
        'type' => 'text',
        'id' => 'placeholder',
        'label' => 'Placeholder Text',
        'default' => 'Your name',
    ],
];
$data=[
“用户名”=>数组(
'键入'=>'复选框',
'id'=>'username',
“标签”=>“显示用户名字段”,
“默认值”=>true,
),
“分隔符”=>数组(
排列(
'类型'=>'分隔符',
“高度”=>“薄”
),
排列(
'类型'=>'分隔符',
“高度”=>“薄”
)
),
'占位符'=>数组(
'类型'=>'文本',
“id'=>“占位符”,
“标签”=>“占位符文本”,
'默认'=>'您的姓名',
),
];
回声';
打印(数据);
回声'

在关联数组中不可能有相同的键

如果给定相同的键,则会覆盖它

根据您的数据,我假设您正在尝试渲染表单

基于此,以下是我的建议

  • 将键名移动到数组中并利用它
  • 示例

  • 或者,如果仍然希望键名的顺序相同,请将其作为数组数组
  • 示例


    在关联数组中不可能有相同的键

    如果给定相同的键,则会覆盖它

    根据您的数据,我假设您正在尝试渲染表单

    基于此,以下是我的建议

  • 将键名移动到数组中并利用它
  • 示例

  • 或者,如果仍然希望键名的顺序相同,请将其作为数组数组
  • 示例


    这不能用你试图做的方式来做。数组键用于标识数组中的条目。只能有一个元素具有相同的键。因此,在您的示例中,使用分隔符键的第二个元素将覆盖第一个元素

    所以你必须用另一种方法来解决它。一种方法是不使用显式键,只使用us数字索引。您已经将键值作为每个数组项中的id字段

    看起来是这样的:

    $data=[
    数组(
    '键入'=>'复选框',
    'id'=>'username',
    “标签”=>“显示用户名字段”,
    “默认值”=>true,
    ),
    数组(
    '类型'=>'分隔符',
    “高度”=>“薄”
    ),       
    数组(
    'type'=>'textarea',
    “id”=>“标题”,
    “标签”=>“标题文本”,
    '默认'=>'',
    ),
    数组(
    '类型'=>'分隔符',
    “高度”=>“薄”
    ),
    数组(
    '类型'=>'文本',
    “id'=>“占位符”,
    “标签”=>“占位符文本”,
    '默认'=>'您的姓名',
    ),
    ];
    回声';
    打印(数据);
    回声';
    

    您必须循环遍历条目才能找到特定的元素。但是,如果您是从数据生成html,我猜您无论如何都在循环使用它。

    这不能用您尝试的方式来完成。数组键用于标识数组中的条目。只能有一个元素具有相同的键。因此,在您的示例中,使用分隔符键的第二个元素将覆盖第一个元素

    所以你必须用另一种方法来解决它。一种方法是不使用显式键,只使用us数字索引。您已经将键值作为每个数组项中的id字段

    看起来是这样的:

    $data=[
    数组(
    '键入'=>'复选框',
    'id'=>'username',
    “标签”=>“显示用户名字段”,
    “默认值”=>true,
    ),
    数组(
    '类型'=>'分隔符',
    “高度”=>“薄”
    ),       
    数组(
    'type'=>'textarea',
    “id”=>“标题”,
    “标签”=>“标题文本”,
    '默认'=>'',
    ),
    数组(
    '类型'=>'分隔符',
    “高度”=>“薄”
    ),
    数组(
    '类型'=>'文本',
    “id'=>“占位符”,
    “标签”=>“占位符文本”,
    '默认'=>'您的姓名',
    ),
    ];
    回声';
    打印(数据);
    回声';
    
    您必须循环遍历条目才能找到特定的元素。但是如果你是g
    $data = [
        [
            'username' => [ 
                'type' => 'checkbox',
                'id' => 'username',
                'label' => 'Show Username Field',
                'default' => true,
            ],
        ],
        [
            'separator' => [ 
                'type' => 'separator',
                'height' => 'thin'
            ],
        ],
        [
            'heading' => [ 
                'type' => 'textarea',
                'id' => 'heading',
                'label' => 'Heading Text',
                'default' => '',
            ],
        ],
        [
            'separator' => [ 
                'type' => 'separator',
                'height' => 'thin'
            ],
        ],
        [
            'placeholder' => [ 
                'type' => 'text',
                'id' => 'placeholder',
                'label' => 'Placeholder Text',
                'default' => 'Your name',
            ],
        ]
    ];