在关联数组中使用空字符串作为键
Using empty string as key in associative array
我需要 select 并根据一些值对一些项目进行分组,使用关联多维数组很容易:
$Groups = array(
"Value1" = array("Item1", "Item3"),
"Value2" = array("Item2", "Item4")
);
但有些项目没有值,所以我的数组将类似于:
$Groups = array(
"Value1" = array("Item1", "Item3"),
"Value2" = array("Item2", "Item4")
"" = array("Item5", "Item6")
);
我已经对其进行了测试(也在 foreach 循环中)并且一切似乎都运行良好,但是 我是 php 的新手,我很担心使用空键可能会给我带来意想不到的问题。
空键使用关联数组有问题吗?
这是一种不好的做法吗?
如果是这样,我怎样才能达到我的目标?
没有空钥匙这回事。密钥可以是空字符串,但您仍然可以始终在 $groups[""]
.
访问它
关联数组的有用之处在于关联,因此将空字符串作为数组键是否有意义取决于您如何将该键与值关联。
您可以使用空字符串作为键,但要小心,因为 null
值将被转换为空字符串:
<?php
$a = ['' => 1];
echo $a[''];
// prints 1
echo $a[null];
// also prints 1
我认为,最好声明一些 "no value" 常量(实际上有一个值)并将其用作数组键:
<?php
define('NO_VALUE_KEY', 'the_key_without_value');
$a = [NO_VALUE_KEY => 1];
我需要 select 并根据一些值对一些项目进行分组,使用关联多维数组很容易:
$Groups = array(
"Value1" = array("Item1", "Item3"),
"Value2" = array("Item2", "Item4")
);
但有些项目没有值,所以我的数组将类似于:
$Groups = array(
"Value1" = array("Item1", "Item3"),
"Value2" = array("Item2", "Item4")
"" = array("Item5", "Item6")
);
我已经对其进行了测试(也在 foreach 循环中)并且一切似乎都运行良好,但是 我是 php 的新手,我很担心使用空键可能会给我带来意想不到的问题。
空键使用关联数组有问题吗?
这是一种不好的做法吗?
如果是这样,我怎样才能达到我的目标?
没有空钥匙这回事。密钥可以是空字符串,但您仍然可以始终在 $groups[""]
.
关联数组的有用之处在于关联,因此将空字符串作为数组键是否有意义取决于您如何将该键与值关联。
您可以使用空字符串作为键,但要小心,因为 null
值将被转换为空字符串:
<?php
$a = ['' => 1];
echo $a[''];
// prints 1
echo $a[null];
// also prints 1
我认为,最好声明一些 "no value" 常量(实际上有一个值)并将其用作数组键:
<?php
define('NO_VALUE_KEY', 'the_key_without_value');
$a = [NO_VALUE_KEY => 1];