Foros del Web » Programando para Internet » PHP »

array

Estas en el tema de array en el foro de PHP en Foros del Web. Hola buenos dias yo hago un unique a un array que repite algunos datos y con esta funcion unique elimino los valores que se repiten ...
  #1 (permalink)  
Antiguo 04/09/2008, 09:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 133
Antigüedad: 16 años, 2 meses
Puntos: 0
array

Hola buenos dias yo hago un unique a un array que repite algunos datos y con esta funcion unique elimino los valores que se repiten el problema está en que cuando esta función elimina un elemento de una matriz no remueve el indice que el elemento eliminado representaba por lo tanto me gustaría saber si hay alguna otra funcion que elimina los indices en blanco y les concatena los siguientes... por ejemplo:

Código PHP:
$a[0]=1;
$a[1]=2;
$a[2]=2;
$a[3]=3;
$a[4]=3;
// si le hago la siguente sentancia 
$b=array_unique($a);
//me queda lo siguiente
$b[0]=1;$b[1]=2;$b[3]=
el problema radica en que cuando recorro este array con un for me da errores porque hay valores que no existen si alguien tiene alguna solución se lo sabre agradecer....
  #2 (permalink)  
Antiguo 04/09/2008, 12:46
 
Fecha de Ingreso: septiembre-2008
Mensajes: 19
Antigüedad: 15 años, 7 meses
Puntos: 5
Respuesta: array

Hola,

Tal como dices, array_unique() devuelve una nueva matriz sin los valores repetidos pero preservando las claves.
Código PHP:
foreach($b as $key=>$valor){
    echo 
"[$key]="."$valor"."<br />";

Resultado,
[0]=1
[1]=2
[3]=3

Entonces, si lo que quieres es recorrer el nuevo array sin contar con las claves:

Código PHP:
foreach($b as $valor){
    echo 
$valor."<br />";

Resultado,
1
2
3

Si lo que quieres es ordenar consecutivamente los índices en el array sin duplicados:

Código PHP:
$key_ordenado = array();
foreach(
$b as $valor){
    
array_push($key_ordenado,$valor);
}

print_r($key_ordenado); 
Resultado:
Array ( [0] => 1 [1] => 2 [2] => 3 )
  #3 (permalink)  
Antiguo 04/09/2008, 14:39
 
Fecha de Ingreso: febrero-2008
Mensajes: 133
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: array

muchas gracias amigo
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 14:00.