2011-07-31 30 views
19

我发现一些使用负数组索引的代码。然后,我尝试使用它,没有什么特别的事情发生。它的行为正常。我可以通过使用标准的foreach循环来检索所有元素。PHP中数组的负指数

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

回答

21

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

13

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

$arr = array(-1 => 5); 
echo $arr[-1]; 

一些PHP的标准库函数(即期待与自然整数索引规则排列的那些),采取负偏移表示“从结束,而不是开始计数”。 array_slice就是这样一个例子。

6

负数组索引在PHP中没有特殊含义(即获取最后/倒数第二个元素等)。 为了得到一个阵列中使用的最后一个元素:

$last = end($array); 

要获得倒数第二个加:

$secondLast = prev($array); 

请记住,这些功能modify the arrays internal pointer。要重置它使用:

reset($array); 
+3

你可以得到最后一个元素更直接。 '$ someArray [count($ someArray) - 1]' –

4

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 
+0

在PHP5中,'E_NOTICE未初始化的字符串偏移:-1' –