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.

Convertir multiline a array asociativo con PHP In PHP, an associative array is an array that uses keys instead of numerical indexes to access values. To convert a multiline string into an associative array, you can use the explode() function to split the string into an array of lines, and then use a loop to split each line into key-value pairs and add them to your new associative array. Here’s some example code: “` “` This code would output the following: “` Array ( [fruit] => apple [color] => red [size] => medium ) “` Note that this code assumes that each line in the multiline string follows the format “key=value”. If your actual input data has a different format, you may need to adjust the code accordingly.

Tengo un bloque de texto en una variable $s:


FOO:317263
BAR:abcd
BAZ:s fsiu sfd sdf s dfsdddddd

¿Cuál es la forma más fácil (y con un buen rendimiento de análisis) de obtener un array asociativo?

$a = array('FOO' => '317263', 'BAR' => 'abcd', 'BAZ' => 's fsiu sfd sdf s dfsdddddd');

?

Hasta ahora, he usado:

preg_match("/^FOO:(.*)$/m", $s, $matches1);
$a['FOO'] = $matches1[1];
preg_match("/^BAR:(.*)$/m", $s, $matches1);
$a['BAR'] = $matches1[1];
...

¿Pero hay una forma más simple de hacerlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma más sencilla de crear el arreglo asociativo a partir del bloque de texto. Puedes utilizar la función explode() para dividir el texto en un arreglo de cadenas, luego puedes recorrer el arreglo y utilizar nuevamente explode() para dividir cada cadena en pares de valores clave. Aquí tienes un ejemplo de código:

    $a = array();
    $lines = explode("\n", trim($s)); // divide el texto en un arreglo de líneas
    foreach ($lines as $line) {
        list($key, $value) = explode(':', $line, 2); // divide cada línea en un par de valores clave
        $a[$key] = $value; // añade el par al arreglo asociativo
    }
    

    Este código debería ser más eficiente y más fácil de leer y mantener que utilizar varias llamadas a preg_match().

Comments are closed.