Foros del Web » Programando para Internet » PHP »

Sustitución en array

Estas en el tema de Sustitución en array en el foro de PHP en Foros del Web. Hola a todos. Quiero hacer una sustitución 'masiva' de los valores de un array segun las claves de otro. Ejemplo: Array a sustituir: Array ( ...
  #1 (permalink)  
Antiguo 07/12/2005, 05:44
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
Sustitución en array

Hola a todos. Quiero hacer una sustitución 'masiva' de los valores de un array segun las claves de otro. Ejemplo:

Array a sustituir:

Array ( [0] => 0 [1] => 2 [2] => 3 [3] => 1 )


Array con los cambios a realizar:

Array ( [0] => 2 [1] => 5 [2] => 6 [3] => -1 )


El resultado debería ser:

Array ( [0] => 2 [1] => 6 [2] => -1 [3] => 5 )

He mirado en el foro y en http://es.php.net pero no encontré nada. ¿Existe alguna función que me eche una mano o me la tengo que currar yo? Gracias

Última edición por jerkan; 07/12/2005 a las 12:45 Razón: el titulo está mal
  #2 (permalink)  
Antiguo 07/12/2005, 08:46
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Prueba así:
Código PHP:
<?
$inicio
=array(031);
$cambio=array(256, -1);

for(
$i=0;$i<count($inicio);$i++){
$posicion=array_search($i$inicio);
$inicio[$posicion]=$cambio[$i];
}
?>
Creo que debería funcionarte.

Saludos,
__________________
sergiold
  #3 (permalink)  
Antiguo 07/12/2005, 12:11
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
Gracias sergiold por la idea.

Sin embargo, como mi problema requería que la función fuera recursiva aquí va mi propuesta:
Código PHP:
function array_switch$array_a_cambiar$array_cambios )
{
    
$nuevoArray = array();
                
    for( 
$index 0$index count($array_a_cambiar); $index++)
    {
        if( 
is_array($array_a_cambiar[$index]) )
        {
            
array_push$nuevoArrayarray_switch$array_a_cambiar[$index], $array_cambios ));
        }
        else
        {                        
            
$nuevoArray[$index] = $array_cambios[$array_a_cambiar[$index]];
                    
        }
    }
    
    return 
$nuevoArray;

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 12:32.