为什么数组索引是undefined undefined?

时间:2019-12-19 09:26:16

标签: php arrays casting

我无法找出以下代码为何不起作用。

我从远程服务器收到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放在“”或“”中,结果是相同的;

我在演员表中缺少什么?

1 个答案:

答案 0 :(得分:1)

您将JSON用作对象而不是数组。因此,键不存在,因为它是一个属性。

Decode,以 true 作为第二个参数来获取数组而不是对象。

$proj_schema = json_decode($proj_schema, true);