PHP:布尔数组的ArrayList

时间:2015-12-02 09:02:55

标签: php

在运行以下代码时,我得到输出为true。任何人都可以向我解释这个概念,因为我是PHP的新手,并且对此非常困惑。

$foo = array(
     true, 
     '0' => false,
     false => true
);

1 个答案:

答案 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);
  1. 因此,您使用值true创建的第一个条目会自动分配键0。

  2. 您为密钥'0'和值false提供的第二个条目将转换为整数密钥0,并使用值false覆盖第一个条目

  3. 第三个条目的键有一个布尔false,它是整数0的类型转换,因此会再次覆盖现有条目,其值为true。< / p>

  4. 你最终得到数组中的单个元素,整数0的索引和值true