Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Reodenar array key después de eliminar elemento

Estas en el tema de Reodenar array key después de eliminar elemento en el foro de PHP en Foros del Web. Hola, Tengo un array así Código: array('1','2','3','4'); y cuando hago Código: print_r($array); el resultado es 0 => 1, 1 => 2, 2 => 3, 3 ...
  #1 (permalink)  
Antiguo 23/06/2014, 09:18
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Reodenar array key después de eliminar elemento

Hola,

Tengo un array así

Código:
array('1','2','3','4');
y cuando hago

Código:
print_r($array);
el resultado es

0 => 1, 1 => 2, 2 => 3, 3 => 4

Bien... estoy eliminando un elemento del array por el valor de esta forma:

Código:
			if(($key = array_search('1', $array)) !== false) {
				unset($array[$key]);
			}
una vez hecho eso vuelvo a imprimir el array

Código:
print_r($array);
y el resultado es el siguiente:

1 => 2, 2 => 3, 3 => 4

me gustaría que volviese a empezar en 0... ya que si por ejemplo elimino el 2, quedaría las keys de los array así 0,2,3,4 y me gustaría que fuese 0,1,2,3

espero que puedan entenderme.
  #2 (permalink)  
Antiguo 23/06/2014, 09:27
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Reodenar array key después de eliminar elemento

Cita:
Iniciado por Pedritomr Ver Mensaje
me gustaría que volviese a empezar en 0... ya que si por ejemplo elimino el 2, quedaría las keys de los array así 0,2,3,4 y me gustaría que fuese 0,1,2,3

espero que puedan entenderme.
HOLA

Si te entendemos...... pero eso que pides es costoso y se llama desplazamiento de elementos de un arreglo y se puede lograr tambien (a un costo menor aunque tambien posiblemente injustificado) copiando el arreglo.

Puedes facilmente recorrer el arreglo independientemente de sus keys tanto con for() como con foreach() y while()

Código PHP:
Ver original
  1. // Puede ser MALA idea:
  2.  
  3. $b = array();
  4. foreach ($a as $elem)
  5.     $b[] = $elem;


<< hemos reordenado el array $a en $b y si quisieras se llamara $a seria aun mas desperdicio de recursos porque habria que destruir $a, copiar $b en $a, destruir $b
__________________
Salu2!
  #3 (permalink)  
Antiguo 23/06/2014, 09:39
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Reodenar array key después de eliminar elemento

Gracias, también pensé en hacerlo así, pero quería ver si había una manera mas "elegante" de hacerlo.

Lo haré así.
  #4 (permalink)  
Antiguo 23/06/2014, 10:58
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Reodenar array key después de eliminar elemento

Cita:
Iniciado por Pedritomr Ver Mensaje
Gracias, también pensé en hacerlo así, pero quería ver si había una manera mas "elegante" de hacerlo.

Lo haré así.
Y la hay:
Código PHP:
Ver original
  1. $arr=array_values($arr);
  #5 (permalink)  
Antiguo 23/06/2014, 11:08
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Reodenar array key después de eliminar elemento

No recordaba array_values()

Permanece la pregunta de si ese costo de copiar todo un array merece la pena o hay un error de logica que lo quiere justificar
__________________
Salu2!

Etiquetas: elemento, key
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:40.