Tengo una matriz:
$array = array(1,2,3,4,5);
Si volcara el contenido de la matriz, se vería así:
array(5) {
[0] => int(1)
[1] => int(2)
[2] => int(3)
[3] => int(4)
[4] => int(5)
}
Cuando recorro y desarmo ciertas teclas, el índice se levanta todo.
foreach($array as $i => $info)
{
if($info == 1 || $info == 2)
{
unset($array[$i]);
}
}
Posteriormente, si hiciera otro volcado ahora se vería así:
array(3) {
[2] => int(3)
[3] => int(4)
[4] => int(5)
}
¿Hay una manera adecuada de restablecer la matriz para que sus elementos estén basados en cero nuevamente?
array(3) {
[0] => int(3)
[1] => int(4)
[2] => int(5)
}
Tengo otro método interesante:
Ahora las teclas $ array se restablecen.
fuente
Use en
array_splice
lugar deunset
:Muestra de trabajo aquí .
fuente
foreach
bucle. Use el estándari Loop
y simplemente reinicie i después de un empalme. Además,Working sample here.
no está funcionando.Solo un aditivo.
Sé que esto es viejo , pero quería agregar una solución que no veo que se me ocurrió. Encontré esta pregunta mientras buscaba una solución diferente y simplemente pensé: "Bueno, mientras estoy aquí".
En primer lugar, la respuesta de Neal es buena y excelente de usar después de ejecutar su ciclo, sin embargo, preferiría hacer todo el trabajo a la vez. Por supuesto, en mi caso específico tuve que hacer más trabajo que este simple ejemplo aquí, pero el método aún se aplica. Vi dónde otros dos sugirieron
foreach
bucles, sin embargo, esto todavía te deja después del trabajo debido a la naturaleza de la bestia. Normalmente sugiero cosas más simples comoforeach
, sin embargo, en este caso, es mejor recordar una buenafor loop
lógica pasada de moda . Simplemente usei
! Para mantener el índice apropiado, solo resta dei
cada eliminación de un elemento de matriz.Aquí está mi ejemplo simple y funcional :
Saldrá:
Esto puede tener muchas implementaciones simples. Por ejemplo, mi caso exacto requería mantener el último elemento en una matriz basado en valores multidimensionales. Te mostraré lo que quiero decir:
Saldrá:
Como puede ver, manipulo $ i antes del empalme ya que estoy buscando eliminar el elemento anterior, en lugar del presente.
fuente
Respuesta tardía pero, después de PHP 5.3 podría ser así;
fuente
O puede hacer su propia función que pase la matriz por referencia.
Entonces, todo lo que tienes que hacer es ...
... y ahora
$array
está sin los valores que colocó$unsets
y las teclas se restablecenfuente
100% trabajando para mi! Después de desarmar elementos en la matriz, puede usar esto para volver a indexar la matriz
fuente
Yo uso
$arr = array_merge($arr);
para rebase una matriz. Simple y directo.fuente
En mi situación, necesitaba retener claves únicas con los valores de la matriz, así que solo usé una segunda matriz:
fuente
unset($arr1)
lo que hará que NO esté disponible para iterar en su bucle. 2) Te falta el punto y coma en la penúltima línea. Este fragmento de código no se ejecutará.