2011-07-31 9 views
19

Encontré un código que usa índices de matriz negativa. Luego, trato de usarlo, no sucede nada especial. Se comporta normalmente. Puedo recuperar todos los elementos utilizando un ciclo estándar foreach.Índice negativo de matriz en PHP

Entonces, ¿cuál es el propósito de usar esos índices negativos? ¿Y cuándo debería usarlo?

Respuesta

21

Una matriz, en PHP, es en realidad solo un tipo de mapa ordenado: puede usar enteros (positivo o negativo), pero también cadenas, como claves, y no habrá mucha diferencia.

13

Las teclas de matriz negativas no tienen un significado especial en PHP, ya que (como cualquier otro valor) pueden ser las teclas de una matriz asociativa.

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

Algunas de las funciones de la biblioteca estándar de PHP (los que esperan matrices regulares con índices enteros naturales), sin embargo, tomar los desplazamientos negativos en el sentido de "contar desde el final en lugar del comienzo". array_slice es uno de esos ejemplos.

6

Los índices de matriz negativa no tienen un significado especial (es decir, obtener el último/segundo elemento pasado, etc.) en PHP. Para obtener el último elemento de una matriz de uso:

$last = end($array); 

Para obtener el penúltimo complemento:

$secondLast = prev($array); 

Tenga en cuenta que estas funciones modify the arrays internal pointer. Para restablecerla utilizar:

reset($array); 
+3

usted puede conseguir el último elemento más directamente. '$ someArray [count ($ someArray) - 1]' –

4

From 7.1 onward, tenemos un caso especial importante y práctico, es decir, cuando se utiliza la sintaxis de matrices para acceder a determinados caracteres de una cadena de revés:

$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

En PHP5, 'E_NOTICE Desvío de cadena sin inicializar: -1' –

Cuestiones relacionadas