Foros del Web » Programando para Internet » PHP »

Eliminar elementos array

Estas en el tema de Eliminar elementos array en el foro de PHP en Foros del Web. Buenas, Necesito eliminar los valores de la clave [count] que sean iguales a 1 Código: Array ( [0] => Array ( [value] => 0cfb2606942c7a5ae9a6a34be3cc350d [count] ...
  #1 (permalink)  
Antiguo 25/03/2011, 05:54
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Eliminar elementos array

Buenas,

Necesito eliminar los valores de la clave [count] que sean iguales a 1
Código:
Array
(
    [0] => Array
        (
            [value] => 0cfb2606942c7a5ae9a6a34be3cc350d
            [count] => 9
        )

    [1] => Array
        (
            [value] => 239413514433456
            [count] => 39
        )
    [2] => Array
        (
            [value] => 239413514433456
            [count] => 1
        )
    [3] => Array
        (
            [value] => 2394135144234asdf233456
            [count] => 51
        )
)
Es decir aqui deberia borrar el elemento 2 del array y que tome un nuevo tamaño el array al elminarlo ... He visto que hay una funcion array_search pero no se utilizarla con un array bidimensional ... Además necesito
  #2 (permalink)  
Antiguo 25/03/2011, 06:09
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Eliminar elementos array

Muestrame un código o algo que hayas intentado a ver si te puedo ayudar, un saludo.
En principio puedes utilizar un for que recorra los 4 elementos que tienes en el array, dentro del for una condición que haga referencia al valor de 'count' y compararla con 1.
Si es verdad utiliza la función array_splice para eliminar el elemento con la referencia del contador del for.
  #3 (permalink)  
Antiguo 25/03/2011, 06:25
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Respuesta: Eliminar elementos array

Estoy intentado modificar esta funcion para mi array, ya que el mio es bidimensional ...

$array: el array en el que queremos eliminar se le pasa por valor.
$deleteIt: el valor que queremos eliminar
$useOldKeys: si el valor es false la funcion re hará el índice (desde 0, 1, …)

si es true: la función conservará el antiguo índice

Devuelve verdadero si se encontró el valor, sino falso

Código PHP:
function deleteFromArray(&$array$deleteIt$useOldKeys FALSE)
{
    
$key array_search($deleteIt,$array,TRUE);
    if(
$key === FALSE)  return FALSE;
    unset(
$array[$key]);
    if(!
$useOldKeys)  $array array_values($array);
    return 
TRUE;

  #4 (permalink)  
Antiguo 25/03/2011, 09:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 1 mes
Puntos: 58
Respuesta: Eliminar elementos array

Hola naitmeir.
¿Puede haber más de un valor igual a 1?
  #5 (permalink)  
Antiguo 25/03/2011, 09:24
Avatar de naitmeir  
Fecha de Ingreso: junio-2008
Ubicación: Barcelona
Mensajes: 227
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Eliminar elementos array

Si puede haberlo
  #6 (permalink)  
Antiguo 25/03/2011, 09:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 1 mes
Puntos: 58
Respuesta: Eliminar elementos array

Entonces puedes usar este código, a ver si te vale

Código PHP:
$n=0;
foreach(
$array as $valor){
    
$encontrado=array_search(1$valor);
    if (
$encontrado){ 
        
$cont[]=$n;
    }
    
$n++;
}
foreach(
$cont as $key){
    unset(
$entrada[$key]);
}
$array array_values($array); 
Es lo primero que se me ha ocurrido. Seguramente se podrá simplificar porque en php hay cantidad de funciones para todo.

Un saludo.
  #7 (permalink)  
Antiguo 25/03/2011, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Eliminar elementos array

Prueba algo así:
Código PHP:
Ver original
  1. <?php
  2. $array = array(
  3.     array(
  4.         'value' => '0cfb2606942c7a5ae9a6a34be3cc350d',
  5.         'count' => 9
  6.     ),
  7.     array(
  8.         'value' => '239413514433456',
  9.         'count' => 39
  10.     ),
  11.     array(
  12.         'value' => '239413514433456',
  13.         'count' => 1
  14.     ),
  15.     array(
  16.         'value' => '2394135144234asdf233456',
  17.         'count' => 51
  18.     ),
  19. );
  20.  
  21. $filtered = array_filter($array, function($array) {
  22.     if (!is_array($array)) return true;
  23.    
  24.     if ($array['count'] == 1) return false;
  25.     return true;
  26. });
  27.  
  28. var_dump($filtered);

Saludos.
  #8 (permalink)  
Antiguo 25/03/2011, 10:02
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 1 mes
Puntos: 58
Respuesta: Eliminar elementos array

En el ejemplo que te he puesto, a tu array lo he llamado $array. Por si acaso no lo tenías claro.

Un saludo.
  #9 (permalink)  
Antiguo 25/03/2011, 15:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 1 mes
Puntos: 58
Respuesta: Eliminar elementos array

Hola naitmeir.
Me acabo de dar cuenta que el ejemplo que te he puesto tenía un fallo. Sería:

unset($array[$key]);

Para hacerlo utilizando la función que has puesto sería:

Código PHP:
function deleteFromArray(&$array$deleteIt$useOldKeys){
    
$n 0;
    foreach(
$array as $valor){
        
$resultado array_search($deleteIt$valorTRUE);
        if (
$resultado){ 
            
$cont[] = $n;
        }
        
$n++;
    }
    if (!isset(
$cont)) return FALSE;
    foreach(
$cont as $key){
        unset(
$array[$key]);
    }
    if(!
$useOldKeys$array array_values($array);    
    return 
TRUE;

y la llamada:

Código PHP:
$bol deleteFromArray($array"1"FALSE); 
Ahora sí está bien.

Un saludo.

Etiquetas: elementos
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 23:18.