为什么数组索引未定义为未定义?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么数组索引未定义为未定义?相关的知识,希望对你有一定的参考价值。

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

我有一个来自远程服务器的JSON答案,其中包含以下数据:

...., "UserId":{"50423":"Free Kkludkjta","54379":"Sjkllyuu00e9lkj Nolla","67103":"Tswtu00f3 BLLA","64469":"Uzu00e1h G","46699":"RTu00e1sdt UTSF","46873":"Tamu00e1s 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:wampwwwj34administratorcomponentscom_mycomponentviewsmyviewview.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:wampwwwj34administratorcomponentscom_mycomponentviewsmyviewview.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:wampwwwj34administratorcomponentscom_mycomponentviewsmyviewview.html.php on line 116

如果我使用foreach遍历数组并基于'if($ key == 64469)写出元素,它将回显该名称,但是我无法通过数组键访问该名称。

结果与PHP 5.6.32(我知道)和PHP 7.1.0相同。如果将ID放在“”或“ ;; >>中,结果是相同的

我在演员表上缺少什么?

我无法找出以下代码为什么不起作用。我有一个来自远程服务器的JSON答案,其中包含以下数据:....,“ UserId”:{“ 50423”:“ Free Kkludkjta”,“ 54379”:“ ...

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

以上是关于为什么数组索引未定义为未定义?的主要内容,如果未能解决你的问题,请参考以下文章

反应:作为道具的数组显示为未定义

将标头令牌获取为未定义

为啥 Firebug 不为未定义的属性显示“未捕获的类型错误”?

无法为未定义的类 UIBarButtonItem 定义类别

Server Stats 代码将通道更新为未定义而不是成员总数

为啥我的 HTTP DELETE 请求正文显示为未定义?