有谁能让我知道如何在php数组中允许重复键?我已经阅读了有关这些问题的所有相同帖子,但它没有回答我的问题。
在以下示例中,我想传递第二个'分隔符'密钥没有重命名。
$data = [
'username' => array(
'type' => 'checkbox',
'id' => 'username',
'label' => 'Show Username Field',
'default' => true,
),
'separator' => array(
'type' => 'separator',
'height' => 'thin'
),
'heading' => array(
'type' => 'textarea',
'id' => 'heading',
'label' => 'Heading Text',
'default' => '',
),
'separator' => array(
'type' => 'separator',
'height' => 'thin'
),
'placeholder' => array(
'type' => 'text',
'id' => 'placeholder',
'label' => 'Placeholder Text',
'default' => 'Your name',
),
];
echo '<pre>';
print_r($data);
echo '</pre>';
&#13;
答案 0 :(得分:1)
关联数组中不可能有相同的键。
如果给出相同的键,它将被覆盖。
根据您的数据,我假设您正在尝试呈现表单。
基于此,以下是我的建议。
示例强>
$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 = [
[
'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',
],
]
];
答案 1 :(得分:1)
这不能以你想要的方式完成。数组键是标识数组中条目的内容。您只能拥有一个具有相同键的元素。因此,在您的示例中,使用分隔符键的第二个元素将覆盖第一个元素。
所以你必须以其他方式解决它。一种方法是不使用显式键,只使用数字索引。您已将键值作为每个数组条目中的id字段。
这看起来像这样:
$data = [
array(
'type' => 'checkbox',
'id' => 'username',
'label' => 'Show Username Field',
'default' => true,
),
array(
'type' => 'separator',
'height' => 'thin'
),
array(
'type' => 'textarea',
'id' => 'heading',
'label' => 'Heading Text',
'default' => '',
),
array(
'type' => 'separator',
'height' => 'thin'
),
array(
'type' => 'text',
'id' => 'placeholder',
'label' => 'Placeholder Text',
'default' => 'Your name',
),
];
echo '<pre>';
print_r($data);
echo '</pre>';
您必须遍历条目才能找到特定元素。但是如果你从数据中生成html,我猜你无论如何都在循环它。
答案 2 :(得分:0)
数组格式错误,初始化数组如下所示。
$data = [
'username' => array(
'type' => 'checkbox',
'id' => 'username',
'label' => 'Show Username Field',
'default' => true,
),
'separator' => array(
array(
'type' => 'separator',
'height' => 'thin'
),
array(
'type' => 'separator',
'height' => 'thin'
)
),
'placeholder' => array(
'type' => 'text',
'id' => 'placeholder',
'label' => 'Placeholder Text',
'default' => 'Your name',
),
];
echo '<pre>';
print_r($data);
echo '</pre>