PHP未定义的数组索引.为什么?

Syl*_*nek 9 php arrays

这是......我甚至不知道这是怎么回事.

// var_dump of items before
object(stdClass)[84]
   public '75' => object(stdClass)[87]

$items = (array) $items; // Casting unserialized stdClass to array
var_dump($items);

//Result of var dump:
array
  '75' => 
    object(stdClass)[87]

//Now lets get this item:
var_dump($items[75]); // Error
var_dump($items['75']); // Error
Run Code Online (Sandbox Code Playgroud)

什么?

谢谢.

Tuf*_*rım 4

我认为,您正在使用调试扩展,因此var_dump()输出与标准库不同,属性不能是数字,但$obj->{'75'}没关系。如果您可以通过“是”到达子对象,那么$items->{'75'}您就有一个数字属性。否则你可以尝试print_r($items);查看原始输出,或者检查之后的数组get_object_vars()

    <?php

$items = new stdClass();
$items->{'75'} = new stdClass();
$items->{'75'}->{'85'} = new stdClass();


$items = (array) $items; // Casting unserialized stdClass to array
$items_array = get_object_vars($items); // getting object vars as an array.

var_dump($items["75"]); // Error
var_dump($items['75']); // Error
var_dump($items_array['75']); // Works
Run Code Online (Sandbox Code Playgroud)

PHP 问题: #45959

阅读铸造块引用:http://www.php.net/manual/en/language.types.array.php#language.types.array.casting