Foros del Web » Programando para Internet » PHP »

eliminar campo de array

Estas en el tema de eliminar campo de array en el foro de PHP en Foros del Web. Verán, tengo un problema. lo que sucede es que tengo un array, y lo que necesito es quitarle datos a ese array. Un ejemplo del ...
  #1 (permalink)  
Antiguo 14/04/2003, 09:53
Badjov
Invitado
 
Mensajes: n/a
Puntos:
eliminar campo de array

Verán, tengo un problema. lo que sucede es que tengo un array, y lo que necesito es quitarle datos a ese array.

Un ejemplo del formato del array sería:
a[4] = 3
a[2] = 4
a[3] = 1
a[12] = 2
a[1] = 3

el comando que utilizo es el array_splice, pero no me funciona bien. Al parecer el problema se encuentra en la posición, ya que el numero que va despues del nombre de la variable es indefinido. Habia leido algo sobre la clave del array con array_keys, pero creo que no me funciona bien, o no se hacerlo.

espero que me puedan ayuda, de antemano gracias.
  #2 (permalink)  
Antiguo 14/04/2003, 10:04
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 21 años, 11 meses
Puntos: 2
yo una vez hice un script donde borraba toda la linea,, osea,, por ej.. si en el txt estan asi:

pedo|pedo2|pedo3
pedito|pedito2|pedito3


y quieria borrar la linea,, me eliminaba la que yo deseaba,, ej:
pedo|pedo2|pedo3

no se si lo kieras..
__________________
http://www.chorcha.com
  #3 (permalink)  
Antiguo 14/04/2003, 10:08
Badjov
Invitado
 
Mensajes: n/a
Puntos:
Parece que no me entendiste bien, yo no quiero borrar algo de un archivo de texto, sino que quiero borrar algo de una variable del tipo array. Pero bien, tu script parece interesante, por que no muestras el codigo.

De todas formas, muchas gracias por tu preocupación.
  #4 (permalink)  
Antiguo 14/04/2003, 10:16
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 21 años, 11 meses
Puntos: 2
jej,, perdon,, pero es que me imagine q ese era tu problem:

Código PHP:
<body link=black alink=black vlink=black>

<?php

$file 
"noticias.txt"//archivo txt a utilizar

if(isset($file)){
$fichero fopen($file'r') or die('Error de apertura');
$num_linea 0;
while (!
feof($fichero))
{
$num_linea++;
$linea fgets($fichero4096);
$renglon[$num_linea] = $linea;
$linea htmlentities($linea);
echo 
"<table bgcolor=#666666 cellspacing=1 cellpadding=3 align=center width=400>
<tr><td bgcolor=#CCCCCC width=60><a name='$num_linea'>
<a href='borrar.php?del=$num_linea&file="
.rawurlencode(stripslashes($file))."'>
<b>
<font face=Tahoma color=black size=2>Borrar: </td><td bgcolor=#eeeeee>
<font face=Tahoma size=2>
$num_linea</b></a><b>&nbsp;$linea</b></td></tr></table><br>\n"
;
}
fclose($fichero);
if(isset(
$del)){
$id = @fopen($file,"w");
for(
$f=0;$f<=$num_linea;$f++){
$renglon[$del]="";
@
fwrite($id,$renglon[$f]);
}
@
fclose($id);
$pos $del-5;
echo 
"<script>location.href='borrar.php?file=$file#$pos'</script>";
}
}
?>
Servido Sr.
__________________
http://www.chorcha.com
  #5 (permalink)  
Antiguo 14/04/2003, 12:44
Badjov
Invitado
 
Mensajes: n/a
Puntos:
Encontre la solución

Un elemento se elimina:
unset($nombre_array["elemento"]);

Gracias a camargo por el codigo y por tratar de ayudarme, como el, hay pocos.
  #6 (permalink)  
Antiguo 14/04/2003, 12:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
mmm Badjov ... pero unset() para un elemento del array (asociativo como lo usas) .. Solo deja ese elemento como "NULL" .. pero sigue reservado su espacio en el array ...

Osese, cuenta el total de elementos del array antes y despues de tu unset() .. (puedes usar count($nombre_array) ... ) veras que es el mismo numero de elementos en el array ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 14/04/2003, 13:57
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 7 meses
Puntos: 8
Hola, me interesa bastante, porque yo siempre uso unset(), pero a mi me funciona bien (o no!).
Hice este test y parece que anda, osea imprime 4 y despues 3...
Código PHP:
$matriz["buenos"] = "valor1";
$matriz["dias"] = "valor2";
$matriz["a"] = "valor3";
$matriz["todos"] = "valor4";
echo 
count($matriz)."<br>\n";
unset(
$matriz["dias"]);
echo 
count($matriz)."<br>\n"
un saludo,
  #8 (permalink)  
Antiguo 14/04/2003, 14:10
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 7 meses
Puntos: 8
Haaaa, Cluster, parece que el problema esta con array bidimensionales.
Código PHP:
$matriz[0]["buenos"] = "valor1";
$matriz[1]["dias"] = "valor2";
$matriz[2]["a"] = "valor3";
$matriz[3]["todos"] = "valor4";
echo 
"<br>\n".count($matriz);
unset(
$matriz[1]["dias"]);
echo 
"<br>\n".count($matriz); 
Aca si, al hacer un count despues del unset el valor es el mismo.

saludos
  #9 (permalink)  
Antiguo 14/04/2003, 14:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
La priméra prueba "creaía" que iva a fallar .... El unset() deja a NULL el valor del indice que llames .. Lo que no sé es porqué desaparece el elemento entero del array unidimensional ..?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 19:28.