我无法找出以下代码为何不起作用。
我从远程服务器收到JSON答复,其中包含以下数据:
...., "UserId":{"50423":"Free Kkludkjta","54379":"Sjkllyu\u00e9lkj Nolla","67103":"Tswt\u00f3 BLLA","64469":"Uz\u00e1h G","46699":"RT\u00e1sdt UTSF","46873":"Tam\u00e1s XXXX"}, ...
(名字交换了,但是由于在查询中有一些特殊的字符,所以我保留了这些字符)
我有以下代码片段,其中给出了“ idx 64469的数组索引未定义”:
$proj_schema = json_decode($proj_schema);
var_dump($proj_schema->UserId);
$avail_users = (array)$proj_schema->UserId;
var_dump($avail_users);
var_dump($avail_users[64469]);
输出如下:
C:\wamp\www\j34\administrator\components\com_mycomponent\views\myview\view.html.php:113:
object(stdClass)[309]
public '50423' => string 'Name1' (length=14)
public '54379' => string 'Name2' (length=18)
public '67103' => string 'Name3' (length=12)
public '64469' => string 'Name4' (length=15)
public '46699' => string 'Name5' (length=11)
public '46873' => string 'Name6' (length=12)
C:\wamp\www\j34\administrator\components\com_mycomponent\views\myview\view.html.php:115:
array (size=6)
'50423' => string 'Name1' (length=14)
'54379' => string 'Name2' (length=18)
'67103' => string 'Name3' (length=12)
'64469' => string 'Name4' (length=15)
'46699' => string 'Name5' (length=11)
'46873' => string 'Name6' (length=12)
Notice: Undefined offset: 64469 in C:\wamp\www\j34\administrator\components\com_mycomponent\views\myview\view.html.php on line 116
如果我使用foreach遍历数组并基于'if($ key == 64469)'写出元素,它将回显该名称,但无法通过数组键访问该名称。
结果与PHP 5.6.32(我知道)和PHP 7.1.0相同。如果将ID放在“”或“”中,结果是相同的;
我在演员表中缺少什么?
答案 0 :(得分:1)
您将JSON用作对象而不是数组。因此,键不存在,因为它是一个属性。
Decode,以 true 作为第二个参数来获取数组而不是对象。
$proj_schema = json_decode($proj_schema, true);