Php 透明阵列与对象投射

Php 透明阵列与对象投射,php,database,arrays,object,syntactic-sugar,Php,Database,Arrays,Object,Syntactic Sugar,当您使用第三方库的PHP扩展获取一些数据库记录时,您知道其中一些会返回数组和其他返回对象,在web开发期间,我必须将这些对象转换为数组,反之亦然,或者至少记住foo是数组,boo是对象,并使用正确的语法访问记录属性。这很烦人,我想可能是语法上的糖分让它更简单了,不是吗 我希望访问记录的属性,而不管它的结构如何。因为我们知道下列结构具有相同的句法力量 $foo = ['a'=>'b','x'=>'y']; $foo = new stdClass(); $foo->a='b';

当您使用第三方库的PHP扩展获取一些数据库记录时,您知道其中一些会返回数组和其他返回对象,在web开发期间,我必须将这些对象转换为数组,反之亦然,或者至少记住foo是数组,boo是对象,并使用正确的语法访问记录属性。这很烦人,我想可能是语法上的糖分让它更简单了,不是吗

我希望访问记录的属性,而不管它的结构如何。因为我们知道下列结构具有相同的句法力量

$foo = ['a'=>'b','x'=>'y'];

$foo = new stdClass();
$foo->a='b';
$foo->x='y';
在javscript:
foo={a:'b',x:'y'}然后
x=foo['a']
x=foo.a
如果这在JS中是可能的,为什么不在PHP中呢?

您可以使用(object)$array\u name进行类型转换(将变量类型更改为object),反之亦然(array)$obj\u name


没有简单的方法可以做到这一点,我可以编写一个使用PHP ArrayObject类并将每个对象/数组转换为PHP ArrayObject的代码(http://php.net/manual/en/class.arrayobject.php)但这比打字更复杂

谢谢,我知道,问题是如何避免这种无用的打字。正如OP所说,他无法控制记录获取,因为它是由第三方LIB完成的。所以你可能想删除这句话。这个问题非常相似,可能有一些解决方案:
    //Array To Object Example
    $person = array (
       'firstname' => 'Richard',
       'lastname' => 'Castera'
    );
     
    $p = (object) $person;
    echo $p->firstname; // Will print 'Richard'

    //Object to Array Example
    $array = (array) $object;