首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在php中保存API调用的结果。

在php中保存API调用的结果。
EN

Stack Overflow用户
提问于 2020-12-19 01:39:44
回答 3查看 123关注 0票数 0

我通过API进行了GET调用,并收到了最初看起来像这样的数据:

代码语言:javascript
运行
复制
{"@odata.context":"API-URL-CALL","value":[{"Id":1,"Name":Bill"},{"Id":2,"Name":Ted"}]

我将这些数据修改为如下所示:

代码语言:javascript
运行
复制
array("Id"=>1,"Name"=>"Bill","Id"=>2,"Name"=>"Ted");

我试图做的是回显这一切,但到目前为止,我只能获得要打印的第二个Id和姓名。

我的代码如下:

代码语言:javascript
运行
复制
<?php
$my_array = array("Id"=>1,"Name"=>"Bill","Id"=>2,"Name"=>"Ted");

foreach($my_array as $key => $value)
{
echo 
"
$key = $value <br>
";
}
?>

如上所述,这只会打印出来:

代码语言:javascript
运行
复制
Id = 2
Name = Ted

我觉得这是一个简单的修复,我已经看了很多帖子,但似乎找不到合适的修复方法。我尝试过这样的东西:

代码语言:javascript
运行
复制
$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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-19 01:57:05

不知道如何从最初的JSON获得第二个数组(尽管这在格式上有一些错误),但是您已经将该数组展平为具有重复键的单个数组(并且只会以最后一个值结束)。

如果你尝试

代码语言:javascript
运行
复制
print_r(array("Id"=>1,"Name"=>"Bill","Id"=>2,"Name"=>"Ted"));

您将看到数据最终如下所示

代码语言:javascript
运行
复制
Array
(
    [Id] => 2
    [Name] => Ted
)

为了正确地提取数据,您需要解码JSON (在代码中更正了JSON ),然后提取数据...

代码语言:javascript
运行
复制
$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]
    ";
}
票数 0
EN

Stack Overflow用户

发布于 2020-12-19 01:44:15

您必须在索引名称两边加上引号。

代码语言:javascript
运行
复制
foreach($my_array as $arr)
  echo '
id = '.$arr['Id'].', <br>
name = '.$arr['Name'].'
  ';
票数 0
EN

Stack Overflow用户

发布于 2020-12-19 02:06:41

这是因为您定义了关联数组。这种类型的数组使用key=>value对。在这种类型的数组中,键应该是唯一的。

因为您使用了不唯一的键,例如IdName,所以每次插入一个值来数组时,它都会覆盖以前的值。所以每次你循环数组的时候,它只显示上一次被覆盖的值。

为了解决这个问题,你应该在数组中使用数组:

代码语言:javascript
运行
复制
$my_array = array(array("Id"=>1,"Name"=>"Bill"),array("Id"=>2,"Name"=>"Ted"));

foreach($my_array as $array)
{
   echo "{$array['Id']} = {$array['Name']} <br>";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65361529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档