具有空键的数组

2022-08-30 10:05:06

PHP琐事在这里。

如果我们声明一个这样的数组:

<?php $arr = [ 'foo' => 'bar', NULL => 'hello' ]; ?>

我们可以像这样访问它

print $arr[NULL];

这将打印 .为什么这是有用的,相关的或必要的?它是PHP错误还是功能?hello

我唯一的想法是,你可以声明数组,其中NULL键等于一条错误消息,向任何使用NULL键的人解释他们的键是空的:

$arr[NULL] = 'Warning you have used a null key, did you mean to?';

有没有人觉得这很有用?似乎是弊大于利的东西。


答案 1

引用手册

Null 将转换为空字符串,即键 null 实际上将存储在 “” 下。

有关如何强制转换键的其他详细信息如下:

键可以是整数或字符串。该值可以是任何类型。

此外,还将发生以下关键转换:

  • 包含有效十进制整数的字符串(除非数字前面有 + 号)将转换为整数类型。例如,密钥“8”实际上将存储在8下。另一方面,“08”不会被强制转换,因为它不是有效的十进制整数。
  • 浮点数也转换为整数,这意味着小数部分将被截断。例如,密钥 8.7 实际上将存储在 8 下。
  • 布尔斯也被强制转换为整数,即密钥 true 实际上将存储在 1 下,而 key false 将存储在 0 下。
  • Null 将转换为空字符串,即键 null 实际上将存储在 “” 下。
  • 数组和对象不能用作键。这样做将导致警告:偏移类型非法。

至于这是有用或必要的,这是值得商榷的。系统会要求您使用整数键或字符串键,并且已收到有关隐式键转换的警告。


答案 2

我发现在访问db时使用类(可以使用其中一个列值作为返回数组的键)来使用Null键的可能性。某些列值可能为空。