相关疑难解决方法(0)

使用数字键作为对象转换数组

我在探讨PHP的构建机制,并在将数组作为对象进行投射时遇到了一个奇怪的情况

$o = (object) array('1'=>'/foo/bar');   
$o = new stdClass();
var_dump($o);
Run Code Online (Sandbox Code Playgroud)

据我了解,PHP属性需要使用与PHP变量相同的规则声明.这是一个有效的变量名称,以字母或下划线开头,后跟任意数量的字母,数字或下划线.但是,上面的代码产生以下输出

object(stdClass)#1 (1) {
  [1]=>
  string(8) "/foo/bar"
}
Run Code Online (Sandbox Code Playgroud)

当你试图访问对象中的信息时,它变得非常奇怪.

var_dump($o->1);        // parse error
var_dump($o->{'1'});        // NULL 
var_dump(get_object_vars($o));  //array(0) { }
Run Code Online (Sandbox Code Playgroud)

无论如何都要获取var_dump报告的信息在对象中,或者它是否仅在请求生命周期的其余部分被锁定?(实际使用这是零,我只是好奇)

php arrays casting

12
推荐指数
2
解决办法
4994
查看次数

标签 统计

arrays ×1

casting ×1

php ×1