Хранить в MySQL array parseado с PHP

У меня есть API, которая возвращает мне array с 25 различными результатами каждый раз, когда я призываю ее. Этот результат я добился parsearlo по каждому сельскому имени, чтобы он прибыл.

Пример, от как я получаю info:

id:1,fecha:2019-01-01:10:01:01,usuario:user1,id:2,fecha:2019-01-01:10:02:01,usuario:user2... и я схватил еще с 23 реестрами.

Используя функцию str_replace () я могу показать результаты таким образом:

$resultado = str_replace( array("id","fecha","usuario"), array("<br>id","<br>fecha","<br>usuario"), $mi_array);

id:1

fecha:2019-01-01:10:01:01

usuario:user1

id:2

fecha:2019-01-01:10:02:01

usuario:user2

То, в чем он нуждался бы, состоит в том, чтобы создавать while, который позволял бы мне из-за каждой группы результатов хранить каждое поле в таблице.

Это возможное?

0
задан 19.03.2019, 15:51
1 ответ

Возможно были способы mГЎs Гіptimas делания этого, но данные estГЎn форматируемые немного редкие, в существо целый string, продолженный отделенный запятыми, без ningГєn delimitador между реестрами.

<?php

    $string = 'id:1,fecha:2019-01-01:10:01:01,usuario:user1,id:2,fecha:2019-01-01:10:02:01,usuario:user2'; // String devuelto

    $registros = explode("id:", $string); // Separamos cada registro

    $arrayFormateado = []; // Array donde guardaremos los datos formateados

    array_shift($registros); // Sacamos el registro null del principio

    foreach ($registros as $r) {

        $array = []; // Array donde vamos guardando el registros

        foreach (str_getcsv('id:' . $r) as $dato){ // str_getcsv Convierte un string con datos separados por un delimitador en un array

            if ($dato === '') { // Saltamos en caso de que tengamos algun dato vacio

                continue; 

            }

            $key = explode(':', $dato)[0]; // Sacamos la llave

            $value = explode(':', $dato, 2)[1]; // Sacamos el valor

            $array[$key] = $value;

        }

        $arrayFormateado[] = $array;

    }

    foreach ($arrayFormateado as $reg) {
        // Logica para grabar en base de datos

        // Los datos podran ser accedidos de la siguiente manera:
        // $reg['id'];
        // $reg['fecha'];
        // $reg['usuario'];
    }

?>

Это форматирует тебе то, что ты получаешь, и готовит это тебе для того, чтобы ты смог добавлять в цикле данные.

2
ответ дан 02.12.2019, 05:27
  • 1
    Но нет части, которую он просит " хранить каждое поле в одной tabla" нет? Ты обработал informació n, но ты не объяснил ему, как отделять этот info, чтобы это пересылать в BD, я предполагаю, что каждое поле в Вашей соответствующей колонне и не таблице. – Jose Manuel Morales 19.03.2019, 17:13
  • 2
    Если вопрос как можение делать цикл, чтобы записывать реестры, ясно, что мы смогли бы añ adir логика, чтобы записывать, но у нас нет ничего, на чем тип BBDD, и т.д. он использует. Поэтому оставьте это ему до цикла. Хотя, если, что следует, что он объясняет, как использовать данные. Сейчас я это издам. – Francisco Garrido 19.03.2019, 17:20
  • 3
    Превосходный, большое спасибо! Функционируй почти в perfecció n. Ло ú nico, который я не могу видеть, те horas:minutos:segundos поля датируй, я понимаю, что está n опуская из-за ":" есть способ не опускать их? – Pepemujica 19.03.2019, 17:29
  • 4
    Прощение, перемещают из-за высоты это себя. Если он из-за explode, я издал ответ añ adiendo 2 это предотвратит explode., что мы потеряли час. – Francisco Garrido 19.03.2019, 17:34
  • 5
    @Francisco Вся razó n ты имеешь. Остался большим có я говорю. – Jose Manuel Morales 19.03.2019, 18:06