es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear un arreglo a partir de un arreglo asociativo utilizando uno de sus valores en un par de valores clave.

Tengo el siguiente array asociativo llamado $data. Aquí tienes algunos pares clave-valor iguales.

Array
   (
      [0] => Array
      (
        [id] => 1
        [config_id] => 31
        [language] => "English"
      )

      [1] => Array
      (
        [id] => 2
        [config_id] => 33
        [language] => "English"
      )
      [2] => Array
      (
        id] => 3
        [config_id] => 32
        [language] => "French"
      )

   )

Y quiero convertir este array a:

Array
   (
      ["English"] => Array(
       [0]=> Array
        (
        [id] => 1
        [config_id] => 31
       )

       [1] => Array
       (
        [id] => 2
        [config_id] => 33
       )
      )
      ["French"] => 
      Array(
       [0]=> Array
        (
        [id] => 3
        [config_id] => 32
        )
      )
     )
   )

Necesito el idioma como clave en el array de salida. ¿Alguien puede ayudarme a resolver este problema? Gracias de antemano.
He probado el siguiente código, pero solo imprime el último valor del array.

$arry = array();
foreach ($data as $val) {

    $arry[$val->language]["id"] =  $val->id;
    $arry[$val->language]["config_id"] =  $val->config_id;
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en PHP y en arrays asociativos, puedo ver que el código provisto tiene varios errores que impiden que produzca la salida deseada. Aquí tienes una versión corregida del código:

    $output = array();
    
    foreach ($data as $val) {
        $output[$val['language']][] = array(
            'id' => $val['id'],
            'config_id' => $val['config_id']
        );
    }
    
    print_r($output);
    

    Lo que hace este código es recorrer el array original $data y crear una nueva clave en el array $output para cada valor de lenguaje único. Luego, para cada valor de lenguaje, crea un array de subarrays, cada uno conteniendo las claves 'id' y 'config_id' y sus valores correspondientes del array original $data.

    El array resultante $output debería tener el formato especificado en la solicitud de la pregunta.

Comments are closed.