php - 数组com问题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;
}
解决方案
至少,您在这两行中缺少 [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){
}
}
推荐阅读
- groovy - 考虑到枚举源的所有值(基本上作为 Junit5 @EnumSource 的替代品),如何在 Spock2 中创建数据驱动测试?
- go - 在 gomacro 中使用项目模块版本
- sql - 如何通过按列唯一性检查将值插入表中?
- 2checkout - 找不到 2checkout 的 API 密钥
- python - Python - 任何括号的正则表达式清理
- json - 如何使用 Nodejs 从 RDS 数据库中获取数据的列名作为 AWS Lambda 函数中 JSON 的响应
- python - FLASK: curl: (7) 无法连接到 127.0.0.1 端口 5500: 连接被拒绝
- java - Java中字符串数字的数字逗号分隔符
- python - super().__init__(model, year, position) TypeError: __init__() missing 1 required positional argument: 'position'
- docker - 将默认 0.0.0.0 从 docker 更改为特定