我想將我的 JSON 回應映射到特定的陣列構造。
簡而言之,這是我的 JSON 資料:
"code": 200,
"unit": null,
"data": [
{
"2022-11-16": 185.6159202
},
{
"2022-11-17": 204.31997631
},...
]
我需要幫助來將此資料映射為陣列結構,就像下面的陣列一樣:
Array (
[0] => Array(
[date] => 2018-01-03
[value] => 0.0002444
)
[1] => Array(
[date] => 2018-01-04
[value] => 0.0171476
)
)
我的 PHP 代碼:
$decoded = json_decode($json, true);
$arr = $decoded['data'];
之后,陣列的結構看起來像這樣,這與我期望的不太一樣:
Array (
[0] => Array ( [2018-01-03] => 0.0002444 )
[1] => Array ( [2018-01-04] => 0.0171476 )
)
uj5u.com熱心網友回復:
使用array_keys()andarray_values()不是理想/最佳方法,因為這會在訪問資料時產生不必要的深度。查看[0]每次呼叫后必須如何撰寫?如果您只打算從中訪問第一項,則創建臨時陣列不是最佳做法。只需使用key()和current()(或reset())。
函式式編程array_map():(演示)
var_export(
array_map(
fn($item) => ['date' => key($item), 'value' => current($item)],
json_decode($json, true)['data']
)
);
經典 foreach(): (演示)
$result = [];
foreach (json_decode($json, true)['data'] as $item) {
$result[] = ['date' => key($item), 'value' => current($item)];
}
var_export($result);
或者使用更少的迭代函式呼叫:( Demo )
$result = [];
foreach (json_decode($json, true)['data'] as $item) {
$key = key($item);
$result[] = ['date' => $key, 'value' => $item[$key]];
}
var_export($result);
或者用compact(): (演示)
$result = [];
foreach (json_decode($json, true)['data'] as $item) {
foreach ($item as $date => $value) {
$result[] = compact(['date', 'value']);
}
}
var_export($result);
uj5u.com熱心網友回復:
foreach($decoded_array as $arr){
$result[] = array('date' => array_keys($arr)[0], 'value' => array_values($arr)[0])
}
uj5u.com熱心網友回復:
我認為這應該有效:
$array_input = json_decode($json, true)['data'];
$array_result = [];
foreach ($array_input as $i) {
$array_result[] = [
'date' => key($i),
'value' => current($i)
];
}
print_r($array_result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537350.html
下一篇:我似乎無法從陣列中洗掉數字小數
