un bucle foreach en php se iterar sobre una copia de la matriz original, por lo que next()
y prev()
funciones inútiles. Si usted tiene un arreglo asociativo y la necesidad de buscar el siguiente punto, se podría iterar sobre las claves de matriz en su lugar:
foreach (array_keys($items) as $index => $key) {
// first, get current item
$item = $items[$key];
// now get next item in array
$next = $items[array_keys($items)[$index + 1]];
}
Dado que la matriz resultante de llaves tiene un índice continuo en sí, puede utilizar que en lugar de acceder a la matriz original
Tenga en cuenta que$next
será null
para la última iteración, ya que no hay orden del día, después de la última. El acceso a claves de matriz no existentes arrojará un aviso php. Para evitar esto, ya sea:
- Comprobar si la última iteración antes de la asignación de valores a
$next
- Comprobar si la llave con
index + 1
existe con array_key_exists()
Utilizando el método 2, el foreach completa podría tener este aspecto :
foreach (array_keys($items) as $index => $key) {
// first, get current item
$item = $items[$key];
// now get next item in array
$next = null;
if (array_key_exists($index + 1, array_keys($items))) {
$next = $items[array_keys($items)[$index + 1]];
}
}
¿Sería aceptable comenzar en el elemento n. ° 2 y compararlo con el elemento n. ° 1? –
No debe comenzar desde 1 – chchrist