将值添加到关联数组,其中某些 key=> 值对不完整


Adding values to an associative array, where some key=> value pairs are incomplete

为什么下面的代码不假定指定的"键"为空的"值"对?

举个例子:

$key1 = "An element";
$key2 = "Another, without a pair";
$key3 = "A third, with a pair";
$check=Array($key1=>21, $key2, $key3=>23);

如果使用 print_r 输出,则返回以下内容:

Array ( [An element] => 21 [0] => Another, without a pair [A third, with a pair] => 23 )

而不是:

Array ( [An element] => 21 [Another, without a pair] => null [A third, with a pair] => 23 )

我想要一个包含未知数量项目的数组,所有这些项目可能有也可能没有键=>值对。我有哪些选择可以确保获得第二个结果?

本质上,我想将键

列表从我的控制器传递给函数,并让函数将它们标识为键>值,即使该值为 null。某些键可能设置了值,而其他键可能没有。

可能是最好的解决方案在于foreach $key as $value {}代码空间,或者我可以$key1括在某种形式的括号中......我不确定!

谢谢

添加 NULL,如下所示。

$check=Array($key1=>21, $key2=>NULL, $key3=>23);

初始化数组:

$keys = array($key1, $key2, $key3);
$check = array_fill_keys($keys,NULL);

这取决于值的类型。

使用NULL是一种非常常见的技术,但是,如果所有值都旨在属于同一类型,也许您想为它们使用"空"值,这不是NULL

例如,如果值是整数,则可能需要使用 0-1 来指示未分配值。或者""字符串。

如果要存储不同的类型,则可能希望将NULL用作非类型化值。