массив ком проблема JSON многомерный - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь получить данные, которые находятся в массиве внутри другого массива, я выполнил поиск по форуму и в Google, и я сделал несколько попыток без успеха. Это похоже на легкую добычу, но я весь день ломаю голову и не могу.

Я оставляю ниже свой код JSON и мою последнюю попытку перейти на PHP. Благодарный.

КОД JSON:

{
    "ordens_de_servico": [
        {
            "oser_numero_os": 23932944,
            "oser_nome_solicitante": "ED PI - CAMPO MAIOR",
            "oser_dt_abertura": "27/03/2018",
            "oser_pontos_refer_endereco": null,
            "oser_observ_reclamacao": null,
            "oser_prioridade": null,
            "servico": {
                "serv_cod_servico": 60,
                "serv_descr_servico": "CORTE POR DEBITO"
            },
            "cliente": {
                "nome": "ANTONIO WELTON DA SILVA OLIVEIRA",
                "telefone": " "
            },
            "unidade_consumidora": {
                "unid_ident_uc": 10945024,
                "logr_nome_logr_expandido": null,
                "medidor": "A2006171",
                "latitude": " -4.711808",
                "longitude": "-41.793455"
            },
            "faturas": [
                {
                    "total_fatura": "23.01"
                },
                {
                    "total_fatura": "17.88"
                },
                {
                    "total_fatura": "23.01"
                },
                {
                    "total_fatura": "21.9"
                },
                {
                    "total_fatura": "22.92"
                }
            ]
        }
    ]
}

КОД PHP

<?php

// Read JSON file
$json = file_get_contents('oss.json');

//Decode JSON
$json_data = json_decode($json,true);

//Print data
print_r($json_data);


$os = $json_data['ordens_de_servico'][0]['oser_numero_os']. PHP_EOL;
$data = $json_data['ordens_de_servico'][0]['oser_dt_abertura']. PHP_EOL;
$cod_serv = $json_data['ordens_de_servico']['servico'][0]['serv_cod_servico']. PHP_EOL;
$total_fatura = $json_data['ordens_de_servico']['faturas'][0]['total_fatura']. PHP_EOL;

echo $os."<p>";
echo $data."<p>";
echo $cod_serv."<p>";
echo $total_fatura."<p>";
?>

Я безуспешно пытался зацикливаться на фатуре

$json_data = json_decode($json,false);

foreach ( $json_data->ordens_de_servico as $valor){
        echo 'FATURA:'.$valor->faturas->total_fatura."<p>".PHP_EOL;
        echo PHP_EOL;
}

1 Ответ

0 голосов
/ 26 апреля 2018

Как минимум, вам не хватает [0] в этих двух строках:

$cod_serv = $json_data['ordens_de_servico']['servico'][0]['serv_cod_servico']. PHP_EOL;
$total_fatura = $json_data['ordens_de_servico']['faturas'][0]['total_fatura']. PHP_EOL;

Они должны быть:

$cod_serv = $json_data['ordens_de_servico'][0]['servico']['serv_cod_servico']. PHP_EOL;
$total_fatura = $json_data['ordens_de_servico'][0]['faturas'][0]['total_fatura']. PHP_EOL;

Пример зацикливания элементов в массивах:

foreach($json_data['ordens_de_servico'] as $key => $value){
    echo $value["oser_numero_os"];
    foreach($json_data['ordens_de_servico'][$key]['faturas'] as $index => $row){

    }
}
...