php7对象转数组,php7中为对象关联数组进⾏解构赋值
在CoffeeScript,Clojure,ES6和许多其他语⾔中,我们对对象/贴图/等进⾏了解构,如下所⽰:
obj = {keyA: 'Hello from A', keyB: 'Hello from B'}
{keyA, keyB} = objphp8兼容php7吗
我在php中到了这个list函数,可以让你像这样构造数组:
$info = array('coffee', 'brown', 'caffeine');
list($drink, $color, $power) = $info;
对于PHP 7.0及更低版本,超出了功能list。⽂档说明:
list仅适⽤于数值数组,并假设数字索引从0开始。
可能适合您的⽬的是将extract()变量从数组导⼊当前符号表的函数。
虽然list您可以明确定义变量名称,extract()但不会给您这种⾃由。
提取关联数组
有了extract你可以做这样的事情:
$info = [ 'drink' => 'coffee', 'color' => 'brown', 'power' => 'caffeine' ];
extract($info);
var_dump($drink); // string(6) "coffee"
var_dump($color); // string(5) "brown"
var_dump($power); // string(8) "caffeine"
提取对象
提取对象的⼯作⽅式⼏乎相同。由于extract只将数组作为参数,我们需要将对象属性作为数组。get_object_vars为你这样做。它返回⼀个关联数组,其中所有公共属性都是键,其值是值。
class User {
public $name = 'Thomas';
}
$user = new User();
extract( get_object_vars($user) );
var_dump($name); // string(6) "Thomas"
陷阱
extract()是不同的,list因为它不允许您显式定义导出到符号表的变量名称。
变量名称默认对应于数组键。
list是⼀种语⾔结构,extract()⽽是⼀种功能
可能会覆盖您事先⽆意中定义的变量
您的数组键可能⽆效,因为变量名称

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。