小编典典
因此,我还没有看到其他答案可以解决这个问题,但是@xdazz接近了。
让我们开始我们的环境,它$obj等于已解码字符串的对象表示法:
php > $obj = json_decode('{"1":1,"2":2}');
php > print_r($obj);
stdClass Object
(
[1] => 1
[2] => 2
)
php > var_dump( $obj );
object(stdClass)#1 (2) {
["1"]=>
int(1)
["2"]=>
int(2)
}
如果您要访问字符串,我们知道以下操作将失败:
php > echo $obj->1;
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'{'' or `'$'' in php shell code on line 1
访问对象变量
您可以这样访问它:
php > echo $obj->{1};
1
这跟说的一样:
php > echo $obj->{'1'};
1
访问数组变量
数组的问题是以下代码返回空白,这是类型转换的问题。
php > echo $obj[1];
php >
如果将其回播,则可以再次访问该对象:
php > $obj = (object) $obj;
php > echo $obj->{1};
1
这是一个可以自动完成上述操作的功能:
function array_key($array, $key){
$obj = (object) $array;
return $obj->{$key};
}
用法示例:
php > $obj = (array) $obj;
php > echo array_key($obj, 1);
1
php > echo array_key($obj, 2);
2
2020-07-27