【发布时间】:2022-11-14 07:20:51
【问题描述】:
我需要遍历一个多维数组并提取所有数据:
PHP代码:
//Loads the data and transforms it into an array
$json_data = json_decode(file_get_contents('data.json'));
//Loops through the array and returns the values
echo '<br>'.'Modal: ' .$json_data->list[0]->mode;
echo '<br>'.'Variation: ' .$json_data->list[0]->change;
foreach ($json_data->list[0]->expiry as $data) {
echo '<br>'.'Due date: ' .$data->cdexpiry;
echo '<br>'.'Value: ' .$data->vlexpiry;
}
JSON数据:
{
"list": [
{
"expiry": [
{
"cdexpiry": "v130",
"vlexpiry": "33528.99"
},
{
"cdexpiry": "v230",
"vlexpiry": "21648.39"
},
{
"cdexpiry": "v150",
"vlexpiry": "185350.30"
}
],
"mode": "0401",
"change": "N"
},
{
"expiry": {
"cdexpiry": "v40",
"vlexpiry": "1091.46"
},
"mode": "1904",
"change": "N"
},
{
"expiry": {
"cdexpiry": "v770",
"vlexpiry": "1001.56"
},
"mode": "1904",
"change": "N"
},
{
"expiry": [
{
"cdexpiry": "v130",
"vlexpiry": "2084.08"
},
{
"cdexpiry": "v260",
"vlexpiry": "28362.31"
}
],
"mode": "0213",
"change": "N"
},
{
"expiry": {
"cdexpiry": "v210",
"vlexpiry": "296.78"
},
"mode": "0101",
"change": "N"
},
{
"expiry": [
{
"cdexpiry": "v245",
"vlexpiry": "1495.37"
},
{
"cdexpiry": "v248",
"vlexpiry": "1440.37"
}
],
"mode": "0217",
"change": "N"
}
],
"type": "8"
}
我已经使用了一些 for's 和 if's - 但我遗漏了一些东西。
for ($i = 0; $i < count($json_data->list); $i++) {
if(isset($json_data->list[$i]->expiry))
期望的结果
| Type | Value |
|---|---|
| Modal | 0401 |
| Variation | N |
| Due date | v130 |
| Value | 33528.99 |
| Due date | v230 |
| Value | 21648.39 |
| Due date | v150 |
| Value | 185350.30 |
| --- | --- |
| Modal | 1904 |
| Variation | N |
| Due date | V40 |
| Value | 1091.46 |
| Due date | v770 |
| Value | 1001.56 |
| --- | --- |
| Modal | 0213 |
| Variation | N |
| Due date | v130 |
| Value | 2084.08 |
| Due date | v260 |
| Value | 28362.31 |
| --- | --- |
| Modal | 0101 |
| Variation | N |
| Due date | V210 |
| Value | 296.78 |
| --- | --- |
| Modal | 0217 |
| Variation | N |
| Due date | V245 |
| Value | 1495.37 |
| Due date | V248 |
| Value | 1440.37 |
我需要从数组中提取所有数据以便以后能够对其进行操作。我指望大师们的帮助!
【问题讨论】:
-
你忘了说你实际的具体问题是什么......
-
是的,我做到了,我无法通过数组内的 foreach 循环,因此我无法提取要处理的数据。如果 foreach 试图访问 list[1] 指针对象,它会返回一个错误。 foreach 函数只能从数组 0 和 5 加载数据...
-
和什么那会是错误吗?
-
该 JSON 具有不规则的结构。确定这是您收到的实际数据吗?
expiry有时是一个数组,有时是一个对象。很奇怪。 -
是的,我同意,这让我睡不着觉。
标签: php arrays json multidimensional-array