[英]Foreach the results of an API call in php
我通過 API 進行了 GET 調用,並收到了最初看起來像這樣的數據:
{"@odata.context":"API-URL-CALL","value":[{"Id":1,"Name":Bill"},{"Id":2,"Name":Ted"}]
我獲取了這些數據並將其更改為如下所示:
array("Id"=>1,"Name"=>"Bill","Id"=>2,"Name"=>"Ted");
我想要做的就是把這一切都回顯出來,但到目前為止,我只能打印出第二個 Id 和 Name。
我的代碼如下:
<?php
$my_array = array("Id"=>1,"Name"=>"Bill","Id"=>2,"Name"=>"Ted");
foreach($my_array as $key => $value)
{
echo
"
$key = $value <br>
";
}
?>
如上所述,這只會打印出來:
Id = 2
Name = Ted
我覺得這是一個簡單的修復方法,我查看了很多帖子,但似乎找不到合適的修復方法。 我嘗試過諸如:
$key = $value[0] <br>
$key = $value[0][Id] <br>
foreach($my_array as $arr)
echo
"
id = $arr[Id], <br>
name = $arr[Name]
"
foreach($my_array as $arr)
echo
"
id = $arr[0][Id], <br>
name = $arr[0][Name]
"
所有這些讓我印象深刻的都是一個角色,或者什么都不是。 就像我之前說的,我覺得這是一個簡單的修復,我忽略了一些東西還是沒有添加一些東西? 任何幫助或建議,甚至是另一個帖子的鏈接都將不勝感激。 謝謝你的時間:^D
您必須在索引名稱周圍加上引號。
foreach($my_array as $arr)
echo '
id = '.$arr['Id'].', <br>
name = '.$arr['Name'].'
';
不確定如何從最初的 JSON 獲得第二個數組(盡管格式上有一些錯誤),但是您已將數組展平為具有重復鍵的單個數組(並且只會以最后一個值結束)。
如果你試試
print_r(array("Id"=>1,"Name"=>"Bill","Id"=>2,"Name"=>"Ted"));
你會看到數據最終為
Array
(
[Id] => 2
[Name] => Ted
)
要正確提取數據,您需要解碼 JSON(更正代碼中的 JSON),然后提取數據...
$json = '{
"@odata.context": "API-URL-CALL",
"value": [
{
"Id": 1,
"Name": "Bill "
},
{
"Id": 2,
"Name": "Ted"
}
]
}';
$my_array = json_decode($json, true);
foreach ( $my_array['value'] as $arr) {
echo "
id = $arr[Id], <br>
name = $arr[Name]
";
}
發生這種情況是因為您定義了關聯數組。 這種類型的數組使用 key=>value 對。 在這種類型的數組中,鍵應該是唯一的。
因為您沒有使用唯一鍵,例如Id
和Name
,所以每次插入一個值到數組時,它都會覆蓋以前的值。 因此,每次遍歷數組時,它只會顯示最后一個被覆蓋的值。
要解決此問題,您應該在數組中使用數組:
$my_array = array(array("Id"=>1,"Name"=>"Bill"),array("Id"=>2,"Name"=>"Ted"));
foreach($my_array as $array)
{
echo "{$array['Id']} = {$array['Name']} <br>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.