Foros del Web » Programando para Internet » PHP »

Eliminar un array con estado X de array de arrays

Estas en el tema de Eliminar un array con estado X de array de arrays en el foro de PHP en Foros del Web. Tengo este array Código HTML: [3] => Array ( [id] => 6 [__children] => Array ( [0] => Array ( [id] => 14 [estado] => ...
  #1 (permalink)  
Antiguo 08/08/2013, 09:17
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Eliminar un array con estado X de array de arrays

Tengo este array

Código HTML:
[3] => Array
(
		[id] => 6
		[__children] => Array
		(
				[0] => Array
				(
						[id] => 14
						[estado] => X
						[__children] => Array
						(
						)

				)

				[1] => Array
				(
						[id] => 17
						[estado] => A
						[__children] => Array
						(
						)

				)

		)
y este script me vacia el array en otro llamado $output, lo que intento es si en uno de los array el estado es estado='X' no considerar dicho array es decir que el vaciado iria sin ese array solo irán los que tengan regitro con estado='A'
Código PHP:
    private function Recursive($input) {
        
$output = array();
        
$aux = array('id'=>'id','menu'=>'label','lft'=>'lft','rgt'=>'rgt','lvl'=>'lvl','root'=>'root','controller'=>'controller','action'=>'action','class'=>'class','active'=>'active','visible'=>'visible','estado'=>'estado','icono'=>'icono','uri'=>'uri','__children'=>'pages','module'=>'module');
        foreach (
$input as $key => $value) {
            if (! 
is_array($value)) {
                if(
$key == 'estado') {
                    if ( 
$value == 'X' ) { 
                        
//pues aqui debería devolver el array y realizar un unset
                        
$output[$key] = $this->Recursive($value);
                    }
                }                
            } else if(
$key === '__children' ){ 
                if (!empty(
$value)){
                    
$output['pages'] = $this->Recursive($value);
                }
            }else
                
$output[$key] = $this->Recursive($value);
        }    
        return 
$output;
    } 
espero me puedan ayudar, gracias
  #2 (permalink)  
Antiguo 08/08/2013, 09:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Eliminar un array con estado X de array de arrays

Pues según tu código lo haces al revés.

Código PHP:
// MAL
if ( $value == 'X' 
Esto está mal porque si no quieres dichos registros no deberías condicionarlos si quiera.

Código PHP:
// BIEN
if ( $value == 'A' 
Eso tiene más sentido, pues únicamente quieres copiar los registros A.

El unset() es innecesario pues sólo debes ignorar dicho array.

Además deberías comparar antes de agregar.
Código PHP:
foreach ($children as $child) {
  if (
$child['estado'] !== 'X') {
    
// OK
  
}

¿No te parece más lógico?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/08/2013, 12:16
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Eliminar un array con estado X de array de arrays

Me confundí, para mi ejemplo, tengo el array[n] y otro array[__children], cuando sea array[0], array[1] necesito lo que tiene dentro ese array para enviar como un array recursivo, y cuando es array[__children] requiero realizar otra verificación si este es vacio de ser vacio no hace nada de no serlo retorna en el array $output['pages'] y nuevamente al ciclo

Código PHP:
Ver original
  1. $output['pages'] = $this->Recursive($value);

Me voy entendiendo mejor, pero presiento que necesito definir el foreach de esta manera

Código PHP:
Ver original
  1. foreach ($input as $key => $value)

Etiquetas: arrays, estado
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 17:58.