我通过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和姓名。
我的代码如下:
<?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
发布于 2020-12-19 01:57:05
不知道如何从最初的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]
";
}
发布于 2020-12-19 01:44:15
您必须在索引名称两边加上引号。
foreach($my_array as $arr)
echo '
id = '.$arr['Id'].', <br>
name = '.$arr['Name'].'
';
发布于 2020-12-19 02:06:41
这是因为您定义了关联数组。这种类型的数组使用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>";
}
https://stackoverflow.com/questions/65361529
复制相似问题