簡體   English   中英

Foreach 在 php 中調用 API 的結果

[英]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 對。 在這種類型的數組中,鍵應該是唯一的。

因為您沒有使用唯一鍵,例如IdName ,所以每次插入一個值到數組時,它都會覆蓋以前的值。 因此,每次遍歷數組時,它只會顯示最后一個被覆蓋的值。

要解決此問題,您應該在數組中使用數組:

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM