Foros del Web » Programando para Internet » PHP »

eliminar item de una arreglo

Estas en el tema de eliminar item de una arreglo en el foro de PHP en Foros del Web. tengo el siguinte codigo Código PHP: if ( $item_fuera ){        foreach( $itemsEnCesta  as  $k  =>  $v )       {           if ( $item_fuera == $k ){            array_slice ( ...
  #1 (permalink)  
Antiguo 27/02/2003, 07:52
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
eliminar item de una arreglo

tengo el siguinte codigo

Código PHP:
if ($item_fuera){ 
      foreach(
$itemsEnCesta as $k => $v)
      { 
         if (
$item_fuera==$k){ 
         
array_slice($itemsEnCesta[$k]);
         } 
      } } 
y no me funciona, he buscado por todas partes y no logro arreglarlo.

ayuda????
  #2 (permalink)  
Antiguo 27/02/2003, 08:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te fijases bien en la sintax de array_splice() verias que no se usa como lo estas pretendiendo usar .. Es decir; NO se le indica un elemento del array y ese es el borrado.. sino que hay q indicarle la posicion de ese elemento (o rango de elementos a borrar) del array ..(arreglo).

Ademas .. hay una pequeña diferencia .. array_splice() es la funcion que deberias usar .. pues esa "borra" el elemento o rango de elementos q especiiques y array_slice() los "extrae" .. osese te dá un array con ese rango de elementos que has definido ..

array_splice()
http://www.php.net/manual/en/function.array-splice.php


Si quieres borrrar un elemento de un array (item) accediendo por su "llave" (key) deberias obtener primero la posicion:

Código PHP:
<?php
// array ejemplo
$array=array("algo","cosa","nose");

$posicion=array_keys($array,"cosa"); // obtener la clave del elemento (= posición en este tipo de array)
echo $posicion[0]."<br>";
array_splice($array,$posicion[0],1); // array_splice($array,indice_elemento_comienzo,desplazamiento)

// Simple ejemplo para chekeo del array generado...
foreach ($array as $elemento){
    echo 
$elemento."<br>";
}
?>
Este método funciona con indices alfanumericos o numericos comenzando en indice 0

$array=array(0=>"algo","cosa","nose");

Si se usase otro indice de comienzo (ejemplo 1 .. ) habría q reajustar el indice_elemento_comienzo+1 .. o lo q corresponda.


Un saludo,

Última edición por Cluster; 27/02/2003 a las 08:44
  #3 (permalink)  
Antiguo 27/02/2003, 09:50
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 17 años, 2 meses
Puntos: 3
hola, osea que aplicado al código de phobos, vendría a ser algo como:

Código PHP:
if ($item_fuera){ 
      foreach(
$itemsEnCesta as $k => $v)
      { 
         if (
$item_fuera==$k){ 
         
array_splice($itemsEnCesta,$k,1); 
         } 
      }
 } 
donde $k indica desde donde empezar a eliminar y 1 cuántos valores elminiar desde ahí hacia adelante.

???
  #4 (permalink)  
Antiguo 27/02/2003, 10:05
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
al final lo deje asi:

Código PHP:

if ($item_fuera){ 
$i=0;
      foreach(
$itemsEnCesta as $k => $v)
      { 
         if (
$item_fuera==$k){ 
        
array_splice($itemsEnCesta,$i,1);
         }
   
$i++; 
      } } 
y funciono
  #5 (permalink)  
Antiguo 27/02/2003, 11:40
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
y para reemplazar como seria la rutina???
  #6 (permalink)  
Antiguo 27/02/2003, 11:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Reemplazar ..

Tan solo acede a tu indice de tu array y le das valor:

$tu_array[$tu_incide]="tuvalornuevo";

Te recomiendo que leas las funciones y métodos de trabajo con arrays de php.net ...

Un saludo,
  #7 (permalink)  
Antiguo 27/02/2003, 11:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Mensaje Original por Phobos
al final lo deje asi:

Código PHP:

if ($item_fuera){ 
$i=0;
      foreach(
$itemsEnCesta as $k => $v)
      { 
         if (
$item_fuera==$k){ 
        
array_splice($itemsEnCesta,$i,1);
         }
   
$i++; 
      } } 
y funciono
Ok, como todo en este mudo de la programación hay varias soluciones .. La que te planteo yo .. solo tendrias q usar tu $item_fuera en:

$posicion=array_keys($itemsEnCesta,$item_fuera);

El caso es entender las diferentes soluciones que se te ofrezcan y pensar cual podría ser mas optima .. No todo es "que funcione" .. hay un segundo paso que es "que sea optimo" . aunque en algunos casos pueda ser la diferencia minima por no decir .. "nula" ..

Un saludo,
  #8 (permalink)  
Antiguo 27/02/2003, 12:17
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
Sonrisa

Si cluster tienes toda la razon.
Ademas segui tu consejo y busque y busque y lograr solucionar otros problemas que tenia, solo hoy empece a ocupar los arreglos de esta manera y me tenian vuelto mono.

Saludos y gracias por todas sus respuestas. :-0
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:21.