在运行以下代码时,我得到输出为true。任何人都可以向我解释这个概念,因为我是PHP的新手,并且对此非常困惑。
$foo = array(
true,
'0' => false,
false => true
);
答案 0 :(得分:3)
请记住,数组键只能是整数或字符串值,并且包含 仅 数字的字符串键会自动转换为整数.... as per the PHP documentation
密钥可以是整数或字符串。值可以是任何类型。
此外还会发生以下关键演员:
◦包含有效整数的字符串将强制转换为整数类型。例如。键“8”实际上将存储在8下。另一方面,“08”将不会被转换,因为它不是有效的十进制整数。
◦浮点数也会转换为整数,这意味着小数部分将被截断。例如。密钥8.7实际上将存储在8下 ◦Bool也会转换为整数,即键值true实际存储在1下,键值为0 ◦Null将转换为空字符串,即键null实际上将存储在“”下 ◦数组和对象不能用作键。这样做会导致警告:非法偏移类型。如果数组声明中的多个元素使用相同的键,则只会使用最后一个键,因为所有其他元素都会被覆盖。
所以对你的例子来说:
$foo=array(true,'0'=>false,false=>true);
因此,您使用值true
创建的第一个条目会自动分配键0。
您为密钥'0'
和值false
提供的第二个条目将转换为整数密钥0
,并使用值false
覆盖第一个条目
第三个条目的键有一个布尔false
,它是整数0
的类型转换,因此会再次覆盖现有条目,其值为true
。< / p>
你最终得到数组中的单个元素,整数0
的索引和值true