Foros del Web » Programando para Internet » PHP »

llenar array con otro array

Estas en el tema de llenar array con otro array en el foro de PHP en Foros del Web. A ver si me pueden ayudar tengo este array: Código: Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] ...
  #1 (permalink)  
Antiguo 30/07/2010, 14:41
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 17 años, 1 mes
Puntos: 5
llenar array con otro array

A ver si me pueden ayudar

tengo este array:
Código:
Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 5
    [4] => Array
        (
            [0] => 14
            [1] => 15
        )

    [5] => Array
        (
            [0] => 8
            [1] => 16
            [2] => 7
        )

)
Les explico un poco, lo creo en base a una cadena
categorias = "2,3,4,5,[14,15],[8,16,7]" y para ,as facil consultar a la base de datos lo pongo "2,3,4,5,14,15,8,16,7"

asi hace un SELECT id,name FROM tabla WHERE ... AND id=2 OR id=3 oR id=...

Ya que me trae los id,name que quiero ahora como los acomodo en un array donde quedara agrupado como originalmente viene el string, es decir, que si 2,3,4,5,[14,15],[8,16,7] me arma este Array:que esta mas arriba donde [0]=>2 este valor cambiara a array(id=>2,name=>categoria_nombre) , como pudiera sustituir los valores por:
Código:
Array
(
    [0] => array ('id'=>2, 'name'=>'historia')
    [1] => array ('id'=>3, 'name'=>'acerca de')
    [2] => array ('id'=>4, 'name'=>'otro tema')
    [3] => array ('id'=>5, 'name'=>'tema 5')
    [4] => Array
        (
            [0] => array ('id'=>14, 'name'=>'otro mas')
            [1] => array ('id'=>15, 'name'=>'contacto')
        )

    [5] => Array
        (
            [0] => array ('id'=>8, 'name'=>'otro tema mas')
            [1] => array ('id'=>16, 'name'=>'otro mas')
            [2] => array ('id'=>7, 'name'=>'ultimo tema')
        )

)
Si ven, los valores de los keys ids ahora son los que venian del string y que busque en la base de datos
  #2 (permalink)  
Antiguo 02/08/2010, 12:06
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 17 años, 1 mes
Puntos: 5
Respuesta: llenar array con otro array

bueno asi quedo mi terjiversado y 'coplicado' revoltijo XD

Tengo dos Arrays:
Código PHP:
$newArr = array(2,3,4,5,array(14,15),array(8,16,7));
$catlist = array(
        array(
'id'=>2,'name'=>"tema 2"),
        array(
'id'=>3,'name'=>"tema 3"),
        array(
'id'=>4,'name'=>"tema 4"),
        array(
'id'=>5,'name'=>"tema del 5"),
        array(
'id'=>14,'name'=>"el tema 14"),
        array(
'id'=>15,'name'=>"15 es mi tema"),
        array(
'id'=>8,'name'=>"tema OCHO"),
        array(
'id'=>16,'name'=>"tema 16"),
        array(
'id'=>7,'name'=>"ultimo tema, 7")
    ); 
Y asi obtengo un tercero donde cambia un valor (numerico por otro de tipo array:
Código PHP:
$newArr2 = array();
$index_newArr2 0;
$arrayInner = array();
$index_arrayInner 0;
foreach (
$newArr as $key=>$value){
    if(
is_array($value)){
        
$index_arrayInner 0;
        
$arrayInner $value;
        foreach(
$arrayInner as $key=>$value)
        {
            
$arrayInner $value;
            foreach(
$catlist as $key=>$value)
            {
                for (
$a=0;$a<count($catlist);$a++)
                {
                    if(
$arrayInner==$catlist[$a]['id'])
                    {
                    
$newArr2[$index_newArr2][$index_arrayInner]=$catlist[$a];
                    break;
                    }
                }
                }
        
$index_arrayInner++;
        }
    }
    else
    {
        
// busca valor(\$value) en catlist...
        
for ($a=0;$a<count($catlist);$a++) 
        {
            if(
$value==$catlist[$a]['id'])
            {
            
$newArr2[$index_newArr2] = $catlist[$a];
            break;
            }
        }
    }
    
$index_newArr2++;

la salida de Array new2 seria entonces:
Código:
Array
(
    [0] => Array
        (
            [id] => 2
            [name] => tema 2
        )

    [1] => Array
        (
            [id] => 3
            [name] => tema 3
        )

    [2] => Array
        (
            [id] => 4
            [name] => tema 4
        )

    [3] => Array
        (
            [id] => 5
            [name] => tema del 5
        )

    [4] => Array
        (
            [0] => Array
                (
                    [id] => 14
                    [name] => el tema 14
                )

            [1] => Array
                (
                    [id] => 15
                    [name] => 15 es mi tema
                )

        )

    [5] => Array
        (
            [0] => Array
                (
                    [id] => 8
                    [name] => tema OCHO
                )

            [1] => Array
                (
                    [id] => 16
                    [name] => tema 16
                )

            [2] => Array
                (
                    [id] => 7
                    [name] => ultimo tema, 7
                )

        )

)
Que lio!!, mi granduda es si para buscar dentro de los arrays esta bien ir comparando los valores (if,...) como le hice o si hay alguna sentencia de arrays_php que haga esto mas rapido sin tanto if, asi en bucles?? o hay algun buscar into array y reemplazar ? o como?, o si esto esta bien, pero pueda ser mas simplificado, algun paso que esta de mas

Etiquetas: llenar
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:25.