我发现了一些使用负数组索引的代码。然后,我尝试使用它,没有什么特别的事情发生。它表现正常。我可以使用标准foreach
循环检索所有元素。
那么,使用这些负面指数的目的是什么?我什么时候应该使用它?
答案 0 :(得分:24)
PHP中的数组实际上只是某种有序映射:你可以使用整数(正面或负面),还可以使用字符串作为键 - 并且不会有太多差异。
答案 1 :(得分:15)
负数组键在PHP中没有特殊含义,因为(与任何其他值一样)它们可以是关联数组的键。
$arr = array(-1 => 5);
echo $arr[-1];
PHP的一些标准库函数(那些期望只有自然整数索引的常规数组)会将负偏移量表示“从结束而不是从开始计数”。 array_slice
就是这样一个例子。
答案 2 :(得分:10)
From 7.1 onward,我们有一个重要且实用的特殊情况,即使用数组语法从后向访问字符串的特定字符时:
$str = "123";
$empty = "";
echo "LAST CHAR of str == '$str[-1]'<br>"; // '3'
echo "LAST CHAR of empty == '$empty[-1]'<br>"; // '', Notice: Uninitialized string offset: -1
答案 3 :(得分:8)
负数组索引在PHP中没有特殊含义(即获取最后/第二个最后一个元素等)。 要获取数组的最后一个元素,请使用:
$last = end($array);
要获得第二个最后添加:
$secondLast = prev($array);
请记住这些功能modify the arrays internal pointer。要重置它,请使用:
reset($array);
答案 4 :(得分:0)
在PHP 8
中:
任何以数字 n 作为其第一个数字键的数组都将使用 n+1 为其下一个隐式键,即使 n 是负数。
因此,如果第一个键为负 -33
,则下一个键将为 -32
(不是 0
).. 以此类推。
看这里的区别