Создавать json в PHP

Я нуждаюсь в том, чтобы сформировать json со следующей структурой

{"1": {
    "44444": "2",
    "54": "1",
    "472": "1"
},

"3": {
    "33333": "2"
},

"31089": {
    "888": "2",
    "6666": "1"
} }

где индексы "1", "3" и "31089" я получаю от консультации с пользователями и "44444": "2" получаются от другой консультации и - no_evento и доли участия.

У меня есть проблемы несмотря на то, что это формирую и то, чего я добился, я сделал со следующим кодом:

foreach ($n_usuarios as $usrs){
   $idu_u = $usrs["id_usuario"];    

   array_push($participaciones, $idu_u);

   foreach ($n_participaciones as $part){

       $idu_p = $part["id_usuario"];

       if ($idu_u != $idu_p) {
           $temp[$part["id_evento"]] = $part["id_participacion"];
       } else {
        array_push($participaciones, $temp);
        $temp = "";
       }
    }}

то, что заканчивается мне следующим:

1

{ 6347: "1", 6348: "1", 6349: "1", 6352: "1", 6353: "1", 6354: "1", 6356: "1", 6374: "1", 6376: "1", 6377: "1", 25271: "1", 25272: "1", 25273: "1", 25274: "1" }

Кто-то мог говорить мне, как я формирую мой json

0
задан 09.11.2019, 02:40
2 ответа

Очень fГЎcil сначала создай твое наводнение array обычно как любой другой array.

, Так как ты считал это полным с данными, которых ты желаешь только, применяет функцию json_encode

$n_usuarios = [1,3,31089];
$n_participaciones = [44444=>2,54=>1,472=>1];
$json = [];

foreach ($n_usuarios as $usrs){
   $idu_u = $usrs;    

  $json[$idu_u] = [];

   /*Aqui deverias hacer una consulta para que solo te traiga las participaciones de ese usuario
    $n_participaciones = $model->get("Select no_evento,participaciones where id_usuario=$idu_u ");
   */
   foreach ($n_participaciones as $key=>$part){

       $json[$idu_u][]= [$key=>$part];

    }
}

 echo json_encode($json);

И я заношу в список уже ты считаешь созданным твой json начиная с твоего array

оно мне кажется чем-либо подобным:

{
    "1":[
        {"44444":2},
        {"54":1},
        {"472":1}
    ],
    "3":[
        {"44444":2},
        {"54":1},
        {"472":1}
    ],
    "31089":[
        {"44444":2},
        {"54":1},
        {"472":1}
    ]
}
1
ответ дан 01.12.2019, 12:13

Попытайся с этим cГіdigo, я объясняю тебе; ты не нуждаешься array_push, если ты не нуждаешься в стоимости возврата ее funciГіn, и в самом деле он больше rГЎpido видит: https://www.php.net / учебник / быть / function.array-push.php

и у тебя есть ошибка здесь:

   if ($idu_u != $idu_p) {
       $temp[$part["id_evento"]] = $part["id_participacion"];
   } else {
    array_push($participaciones, $temp);
    $temp = "";
   }

то, что ты делаешь aquГ - он состоит в том, чтобы сравнивать они пойдите двух консультаций, и если это различные , ты распределяешь это $temp, и если они равны помещаешь $temp в договоренность $participaciones

, сказанные это можешь уменьшать ты cГіdigo asГ - и возможно asГ - я ты функционировал:

foreach ($n_usuarios as $usrs){

   $idu_u = $usrs["id_usuario"];  

   foreach ($n_participaciones as $part){

       $idu_p = $part["id_usuario"];

       if ($idu_u == $idu_p) { // evaluamos si el id es igual

           // y si es verdadero introducimos asi al array $participaciones

           $participaciones[$idu_u][$part["id_evento"]]=$part["id_participacion"];  
       }         
    }}          


    // por ultimo usas json_enconde() para darle el formato de json al arreglo
    echo json_encode($participaciones); 
0
ответ дан 01.12.2019, 12:13
  • 1
    Привет stre_leon, я функционировал твой recomendació n, я сделал это следующим способом: foreach ($ n_participaciones схвати $part) { $temp [$ idu_u] [$part [" id_evento"]] = $part [" id_participacion"]; } $json [] = $temp; и я получаю следующее: –  JavierMMM 22.11.2019, 19:26
  • 2
    21711: { 6347: " 1" 6348: " 1" 6349: " 1" 6352: " 1" 6353: " 1" 6354: " 1" 6355: " 1" 6356: " 1" 6366: " 1" 6367: " 1" } 21653: { 6347: " 2" 6348: " 1" 6349: " 1" 6352: " 1" 6353: " 2" 6354: " 1" 6356: " 1" } 16637: { 6347: " 1" 6348: " 1" 6349: " 1" 6352: " 1" 6353: " 1" 6354: " 1" 6355: " 1" 6356: " 1" 6379: " 1" 25278: " 1" } сейчас, не sé có mo я могу получать каждый из элементов. ¿ Ты имеешь í dea có mo он делается? –  JavierMMM 22.11.2019, 19:29
  • 3
    Я стараюсь читать это с each, но не могу получать элементы по отдельности: $ .each (accesoActividad, function (key, я имею доступ) { console.log (доступ); }) он бросает меня só это полный элемент: 21653: { 6347: " 2" 6348: " 1" 6349: " 1" 6352: " 1" 6353: " 2" 6354: " 1" 6356: " 1" } –  JavierMMM 22.11.2019, 19:34
  • 4
    Ранее я работал с json' s с увеличительным индексом и я могу получать каждый элемент, такое что-то как это: { " members": [{ " name": " Molecule Man" " age": 29, " secretIdentity": " Дэн Jukes" }, { " name": " Madame Uppercut" " age": 39, " secretIdentity": " Джейн Wilson" }] } и посредством этикетки я получаю информацию, но сейчас у меня нет идеи о có mo делать это. –  JavierMMM 22.11.2019, 19:39

Теги

Похожие вопросы