如果我没有指定,数组元素的关键是什么

时间:2014-05-08 23:55:26

标签: php arrays

我想知道所有PHP数组是否必须为key设置value个?我不认为他们这样做,所以我的下一个问题是,每个key的{​​{1}}是否自动成为它在数组中的位置(基于0的索引),或者否则value本身会成为value

也许价值根本没有关键......好奇,因为我不能从key循环内的数组中删除一个元素,如果它没有键。

3 个答案:

答案 0 :(得分:4)

  

我想知道所有PHP数组是否都必须有值的键?

是。来自documentation

  

<强>阵列

     

PHP中的数组实际上是一个有序的映射。映射是一种将值与键关联的类型。

因此,数组的所有元素都必须有一个键。

  

每个值的键是否自动成为它在数组中的位置(从0开始的索引)

几乎正确。如果没有为元素指定键,则键将为1 +前一个元素的键,第一个元素的键为0。

  

如果没有密钥,我无法从foreach循环内的数组中删除元素。

实际上foreach语法除了值之外还公开了键。来自documentation

  

foreach构造提供了一种迭代数组的简单方法。 foreach仅适用于数组和对象,并且当您尝试在具有不同数据类型或未初始化变量的变量上使用它时将发出错误。有两种语法:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

使用后一种foreach语法删除数组元素的示例如下:

// Remove elements from the array that are less than 10
foreach ($array as $key => $value) {
    if ($value < 10) {
        unset($array[$key]);
    }
}

答案 1 :(得分:3)

  

我想知道所有PHP数组是否都必须有值的键?

是的,他们这样做。

  

每个值的键是否自动成为它在数组中的位置(从0开始的索引)

是。如果您没有明确指定键值,那么将使用它的相应位置(基于0的索引)。

  

如果没有密钥,我无法从foreach循环内的数组中删除元素。

您并不总是需要一个键来操作数组。此外,foreach构造允许您使用数组中的键:foreach ($iterable as $key => $value)

答案 2 :(得分:1)

是的,每个值的关键是从0开始的索引。你可以创建一个数组和var_dump()它来查看键。 http://www.php.net/manual/en/language.types.array.php