PHP中数组的负索引

Jeg*_*gus 27 php arrays

我找到了一些使用负数组索引的代码.然后,我尝试使用它,没有什么特别的事情发生.它表现正常.我可以使用标准foreach循环检索所有元素.

那么,使用这些负面指数的目的是什么?我什么时候应该使用它?

Pas*_*TIN 26

PHP中的数组实际上只是某种有序映射:您可以使用整数(正数或负数),也可以使用字符串作为键 - 并且不会有太大区别.


Jer*_*man 17

负数组键在PHP中没有特殊含义,因为(与任何其他值一样)它们可以是关联数组的键.

$arr = array(-1 => 5);
echo $arr[-1];
Run Code Online (Sandbox Code Playgroud)

然而,PHP的一些标准库函数(期望具有自然整数索引的常规数组的函数)采用负偏移来表示"从结束而非开始计数".array_slice就是这样一个例子.


Sz.*_*Sz. 12

从7.1开始,我们有一个重要而实用的特例,即使用数组语法从后向访问字符串的特定字符时:

$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
Run Code Online (Sandbox Code Playgroud)


bug*_*gos 8

负数组索引在PHP中没有特殊含义(即获取最后/第二个最后一个元素等).要获取数组的最后一个元素,请使用:

$last = end($array);
Run Code Online (Sandbox Code Playgroud)

要获得第二个最后添加:

$secondLast = prev($array);
Run Code Online (Sandbox Code Playgroud)

请记住,这些函数会修改数组内部指针.要重置它,请使用:

reset($array);
Run Code Online (Sandbox Code Playgroud)

  • 您可以更直接地获取最后一个元素.`$ someArray [count($ someArray) - 1]` (6认同)