array com problema json multidimensional

时间:2018-04-26 20:52:13

标签: php arrays json

我正在尝试获取另一个数组中的数组中的数据,我在论坛和谷歌进行了搜索,并且我做了几次尝试但没有成功。 这似乎很容易捕获,但我整天都在挣扎,我不能。

我将离开我的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>";
?>

我尝试在fatura

上循环失败
$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 :(得分:1)

至少,你错过了这两行的[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){

    }
}