преобразовать массив в список JSON - PullRequest
0 голосов
/ 15 мая 2019

Я создал объект массива, и я хочу преобразовать его так в моем примере вывода.

вывод, который я хочу:

[
    {
        "10:00": 2,
        "10:30": 2,
        "12:00": 2,
        "12:30": 2,
        "13:00": 1,
        "13:30": 1,
        "14:00": 1,
        "14:30": 1,    
        "15:00": 1,    
        "15:30": 1,
        "16:00": 1,
        "16:30": 1,
        "17:00": 1,
        "17:30": 1,
        "18:00": 1,
        "18:30": 1,
        "19:00": 1,
        "19:30": 1,
        "20:00": 1,
        "20:30": 1,
        "21:00": 1,
        "21:30": 1,
        "22:00": 1,
        "22:30": 1,
        "23:00": 1
    }    
]

но вот что я получил на своем результате

[
    {
        "10:00": 2
    },
    {
        "10:30": 2
    },
    {
        "12:00": 2
    },
    {
        "12:30": 2
    },
    {
        "13:00": 1
    },
    {
        "13:30": 1
    },
    {
        "14:00": 1
    },
    {
        "14:30": 1
    },
    {
        "15:00": 1
    },
    {
        "15:30": 1
    },
    {
        "16:00": 1
    },
    {
        "16:30": 1
    },
    {
        "17:00": 1
    },
    {
        "17:30": 1
    },
    {
        "18:00": 1
    },
    {
        "18:30": 1
    },
    {
        "19:00": 1
    },
    {
        "19:30": 1
    },
    {
        "20:00": 1
    },
    {
        "20:30": 1
    },
    {
        "21:00": 1
    },
    {
        "21:30": 1
    },
    {
        "22:00": 1
    },
    {
        "22:30": 1
    },
    {
        "23:00": 1
    }
]

Я пытаюсь преобразовать мой код в вывод, который я хочу, используя этот код

$flat = array();

foreach($tempreserve->result as $v) {
    if (is_array($v)) {
        $flat = array_merge($flat, array_values_recursive($v));
    }
    else {
        $flat[] = $v;
    }
}  

вот объект массива:

Array
(
    [0] => stdClass Object
        (
            [10:00] => 2
        )

    [1] => stdClass Object
        (
            [10:30] => 2
        )

    [2] => stdClass Object
        (
            [12:00] => 2
        )

    [3] => stdClass Object
        (
            [12:30] => 2
        )

    [4] => stdClass Object
        (
            [13:00] => 1
        )

    [5] => stdClass Object
        (
            [13:30] => 1
        )

    [6] => stdClass Object
        (
            [14:00] => 1
        )

    [7] => stdClass Object
        (
            [14:30] => 1
        )

    [8] => stdClass Object
        (
            [15:00] => 1
        )

    [9] => stdClass Object
        (
            [15:30] => 1
        )

    [10] => stdClass Object
        (
            [16:00] => 1
        )

    [11] => stdClass Object
        (
            [16:30] => 1
        )

    [12] => stdClass Object
        (
            [17:00] => 1
        )

    [13] => stdClass Object
        (
            [17:30] => 1
        )

    [14] => stdClass Object
        (
            [18:00] => 1
        )

    [15] => stdClass Object
        (
            [18:30] => 1
        )

    [16] => stdClass Object
        (
            [19:00] => 1
        )

    [17] => stdClass Object
        (
            [19:30] => 1
        )

    [18] => stdClass Object
        (
            [20:00] => 1
        )

    [19] => stdClass Object
        (
            [20:30] => 1
        )

    [20] => stdClass Object
        (
            [21:00] => 1
        )

    [21] => stdClass Object
        (
            [21:30] => 1
        )

    [22] => stdClass Object
        (
            [22:00] => 1
        )

    [23] => stdClass Object
        (
            [22:30] => 1
        )

    [24] => stdClass Object
        (
            [23:00] => 1
        )

)

Надеюсь, вы, парень, можете помочь мне в этой проблеме Я хочу использовать время, чтобы получить числовое значение

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Вы можете использовать foreach и json_encode, $arr это массив

$res = [];
foreach($arr as $key => $value){
  foreach($value as $innerkey => $innerValue){
    $res[$innerkey] = $innerValue;
  }
}
echo json_encode($res);

Live Demo

0 голосов
/ 15 мая 2019
$a=[];
$b=new stdClass();
$k1="12:00";
$k2="12:50";
$k3="13:10";
$b->$k1=1;
$b->$k2=2;
$b->$k3=3;
$a[]=$b;
echo json_encode($a);

результат

[{
    "12:00": 1,
    "12:50": 2,
    "13:10": 3
}]

Хотите результаты, подобные этим?

полная версия:

$flat=new stdClass();
foreach($tempreserve as $obj) {
    $a=json_decode(json_encode($obj),true);
    $k=array_keys($a)[0];
    $v=$a[$k];
    $flat->$k=$v;
}
echo (json_encode($flat));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...