¿Cómo puedo obtener el elemento antes del último elemento de una matriz en PHP5?PHP - ¿Cómo obtener el elemento antes del último elemento de una matriz?
Respuesta
$array[count($array)-2]
Debe ser una matriz indexada numéricamente (desde cero). Debes tener al menos 2 elementos para que esto funcione. (Obviamente)
Esto funciona incluso en esta matriz:
$array[0] = "hello";
$array[5] = "how";
$array[9] = "are";
end($array);
echo prev($array); // will print "how"
Las otras soluciones usando count() están suponiendo que los índices de la matriz van en orden; al usar end y prev para mover el puntero de matriz, obtienes los valores reales. Intenta usar el método count() en la matriz de arriba y fallará.
Esto es brillante. Traté de usar la solución marcada con la marca de verificación, pero no pude hacer que funcione con mis matrices (de 1 a 20 cuentas posibles). Tu solución funcionó a las mil maravillas. Gracias. –
Un método que funcionará tanto para asociativo matriz y matriz numérica es usar array_pop()
para mostrar el elemento al final de la matriz.
$last = array_pop($array);
$second_last = array_pop($array);
// put back the last
array_push($array, $last);
@ + 1: gran idea. Gracias – Gowri
array_slice toma un desplazamiento negativo como segundo argumento. Esto le dará un único elemento del array que contiene el segundo elemento última:
$arr = array(1,2,3,4,5,6);
array_slice($arr, -2, 1);
Si lo que desea es el único valor por sí mismo tiene varias opciones. Si no te importa usar una variable intermedia, puedes obtener el primer valor con [0] o llamar a array_pop o array_shift, ambos necesitan una variable pasada por referencia o recibirás advertencias en modo estricto.
O simplemente podría usar array_sum o array_product, que es un poco hacky pero funciona bien para arreglos de elementos individuales.
Buena solución flexible para obtener puntos variables en una matriz. implode ('', array_slice ($ arr, -2, 1)) lo obtiene en una línea. – Praesagus
En cuanto a mí bastante pequeña solución
end($array);
echo prev($array);
Esta es la mejor respuesta, la respuesta aceptada es terrible en comparación. – TarranJones
// Indexed based array
$test = array('a','b','c','d','e');
$count = count($test);
print $test[$count-2];
// Associative Array
$months = array(
'jan'=>'January',
'feb' => 'february',
'mar' => 'March',
'apr' => 'April'
);
$keys = array_keys($months);
$count = count($keys);
print $keys[$count-2];
Todas las matrices tienen un "puntero interno" que apunta al elemento de la matriz actual, PHP tiene varias funciones que le permiten navegar a través de la array y ver la clave y el valor de los elementos actuales.
end()
- Mueve el puntero interno de una tabla al último elementoreset()
- Fija el puntero interno de una matriz a su primer elementoprev()
- Rebobina la matriz puntero internonext()
- Avanzar el puntero de matriz interna de una matrizcurrent()
- Devolver el elemento actual en una matrizkey()
- Obtiene una clave de una matrizeach()
- Devolver la clave actual y el par de valores de una matriz y avanzar el cursor gama
Estas funciones funcionan si la matriz está vacía, secuencial o asociativo y como una matriz no se ha especificado en el ejemplo, he supuesto que esto debe funcionar con cualquier matriz.
$array = array(
'before_last' => false,
'last' => false,
);
end($array); /*
- set pointer to last element -> $array['last']
- return new current element value if it exists, -> false
- else return FALSE
*/
prev($array); /*
- set pointer one place before current pointer -> $array['before_last']
- return new current element value if it exists, -> false
- else return FALSE
*/
if(!is_null(key($array)){ /*
- return current element key if it exists -> "before_last"
- else return NULL
*/
$before_last_element_value = current($array); /*
- return current element value if it exists, -> false
- else return FALSE
*/
}
Como se puede ver el resultado esperado (false
) y el resultado para un elemento inexistente es la misma (FALSE
) por lo que no se puede comprobar si existe un elemento utilizando el valor de elemento devuelto, un elemento clave es diferente.
La clave puede ser integer o string. El valor puede ser
type
. source
El key()
devuelve el valor de la clave actual, si existe el elemento de lo contrario, devolverá NULL. Una clave válida nunca puede ser NULL, por lo que si se devuelve un valor nulo, podemos determinar que el elemento no existe.
- 1. ¿Cómo obtener el último elemento de una matriz en Ruby?
- 2. Modificar el último elemento de una matriz
- 3. Obtener la clave del último elemento en una matriz
- 4. PHP: obtener el elemento de matriz
- 5. Obtener el último elemento de una matriz sin cambiar la matriz en PHP?
- 6. ¿Cómo obtener el primer elemento de una matriz PHP asociativa?
- 7. PHP: Eliminar el primer y último elemento de la matriz
- 8. Obteniendo el último elemento de una matriz de cadenas divididas
- 9. PHP - Obtener el índice de un elemento de una matriz
- 10. Obteniendo el último elemento de una matriz en CoffeeScript
- 11. Obtener el último valor seleccionado del elemento de selección múltiple
- 12. PHP - Buscar elemento con un valor y también obtener los elementos antes y después del elemento
- 13. Java obtener el último elemento de una colección
- 14. Obtener el último elemento en SortedDictionary
- 15. ¿Obtener el último elemento en un diccionario?
- 16. Perl ¿Cómo obtener el índice del último elemento de referencia de matriz?
- 17. ¿No hay coma después del último elemento en la matriz?
- 18. ¿Cómo obtener el índice de un elemento en una matriz?
- 19. último elemento de URL
- 20. ¿La matriz [-1] proporciona el último elemento de la matriz?
- 21. PHP: Obtener enésimo elemento de una matriz asociativa
- 22. desarmar último elemento de la matriz
- 23. ¿Encontrar el índice del último elemento distinto de cero en cada fila de una matriz dada?
- 24. PHP agregar un elemento de una matriz
- 25. PHP XPath seleccionar último elemento coincidente
- 26. ¿Cómo obtener un texto antes del elemento dado usando jQuery?
- 27. Java: Obtener el último elemento después de dividir
- 28. Cómo obtener el índice de un elemento en una matriz
- 29. para eliminar el primer y último elemento del conjunto
- 30. Obtener último elemento visible usando jQuery
Gracias. Y todo. –
La respuesta de Erik es más correcta, no solo explica el caso que indicó con claves no secuenciales, sino que también funciona con matrices asociativas (matrices con cadenas como claves) –
La pregunta sugiere ligeramente que el sujeto es una matriz lineal . Cuando la matriz contiene un elemento único y se configura error_reporting (E_ALL), mi solución falla con 'Notice: Offset indefinido: -1 en /test.php en la línea 3'. La solución de Erik falla silenciosamente. Eso es malo. – Notinlist