get_object_vars中的PHP关联数组不适用于整数键



我有一个对象,用于在不同的站点存储产品的当前数量。Site ID用于指示库存的位置,并用作指向数量的对象键。

该产品可以在站点0和站点2有库存,但不一定在站点1有任何库存,因此不必进行设置。

我尝试使用PHP get_object_vars((函数并获得关联数组,但当尝试使用array_keys((函数访问值时,它们没有产生任何输出。在运行下面的测试脚本时,我发现对对象使用整数并不能按预期工作。

<?php

$obj = new stdClass();
$a = 'a';
$b = 1;
$obj->$a = 3;
$obj->$b = 6;
$vars = get_object_vars($obj);
$keys = array_keys($vars);
var_dump($vars);
echo("<br>");
var_dump($keys);
echo("<br><br>");
var_dump($vars[$keys[0]]);
echo("<br>");
var_dump($vars[$keys[1]]);
echo("<br><br>");
$vars = array("a"=>3,1=>6);
$vars['1'] = 6;
$keys = array_keys($vars);
var_dump($vars);
echo("<br>");
var_dump($keys);
echo("<br><br>");
var_dump($vars[$keys[0]]);
echo("<br>");
var_dump($vars[$keys[1]]);

?> 

我得到的结果是:

array(2) { ["a"]=> int(3) ["1"]=> int(6) }
array(2) { [0]=> string(1) "a" [1]=> string(1) "1" }
int(3)
NULL
array(2) { ["a"]=> int(3) [1]=> int(6) }
array(2) { [0]=> string(1) "a" [1]=> int(1) }
int(3)
int(6)

如果对象属性保存为整数,是否可以访问它们?

我运行测试脚本的PHP版本似乎有点过时,在最新版本上尝试了我的代码,但没有返回NULL。我认为这不是bug或问题。

最新更新