Foros del Web » Programando para Internet » PHP »

unset que elimina todo!

Estas en el tema de unset que elimina todo! en el foro de PHP en Foros del Web. Hola todos. Tengo la siguiente duda. Al hacer uso de un unset sobre un array para remover cierto elemento en particular, veo que elimina el ...
  #1 (permalink)  
Antiguo 24/10/2005, 12:03
Avatar de d3j4vu  
Fecha de Ingreso: julio-2005
Ubicación: Ñuñoa en Santiago de Chile
Mensajes: 14
Antigüedad: 18 años, 9 meses
Puntos: 0
unset que elimina todo!

Hola todos. Tengo la siguiente duda.

Al hacer uso de un unset sobre un array para remover cierto elemento en particular, veo que elimina el elemento de la posicion que le digo y los elementos subsecuentes ya no los veo. Modifique el bucle que recorria el arreglo para verificar lo que estaba viendo y obtuve un salto (espacio vacio) en el elemento que quise eliminar. Sin embargo es extraño.

Alguien puede explicarme esto? no entiendo la idea del unset si el array no es modificado y queda con un elemento representado por un espacio en blanco, y no modificando su estructura de indices como supongo que deberia ser.

Saludos a todos y gracias de antemano.
  #2 (permalink)  
Antiguo 24/10/2005, 16:33
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Primero que nada unset(). Segundo esta instrucción no modifica la estructura de los indices, deja el lugar vacio. Hay algunas formas de modificar los indices, acontinuación te dejo un ejemplo de codigo para que entiendas bien como trabaja.
Código PHP:
<?php
$arreglo 
= array("uno","dos","tres","cuatro","cinco","seis","siete","ocho");

var_dump($arreglo);

/* Este es el array original
array(8) {
  [0]=>
  string(3) "uno"
  [1]=>
  string(3) "dos"
  [2]=>
  string(4) "tres"
  [3]=>
  string(6) "cuatro"
  [4]=>
  string(5) "cinco"
  [5]=>
  string(4) "seis"
  [6]=>
  string(5) "siete"
  [7]=>
  string(4) "ocho"
}
*/

unset($arreglo[3]);

var_dump($arreglo);

/* Este es el array modificado y el elemento 3 no esta,
   no esta representado por un espacio en blanco.
array(7) {
  [0]=>
  string(3) "uno"
  [1]=>
  string(3) "dos"
  [2]=>
  string(4) "tres"
  [4]=>
  string(5) "cinco"
  [5]=>
  string(4) "seis"
  [6]=>
  string(5) "siete"
  [7]=>
  string(4) "ocho"
}
*/

// Este es un "truquito" para que sean modificados los indices.
$arreglo2 implode(";",$arreglo);

$arreglo2 explode(";",$arreglo2);

var_dump($arreglo2);

/* Ahora los indices fueron corridos.
array(7) {
  [0]=>
  string(3) "uno"
  [1]=>
  string(3) "dos"
  [2]=>
  string(4) "tres"
  [3]=>
  string(5) "cinco"
  [4]=>
  string(4) "seis"
  [5]=>
  string(5) "siete"
  [6]=>
  string(4) "ocho"
}
*/
?>
Saludos y cualquier cosa pregunta o lee .
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 21:53.