php 有没有类似js里面的解构赋值操作?

例如js中可以这么写:

let o = {
    a:1,
    b:2,
    c:3
};
let {a,b} = o;
console.log(a);//1
console.log(b);//2

我知道php中有个list,但是仅能用于数字索引的数组。

阅读 10.7k
4 个回答

php7.1 已经提供类似方法

$array = ["a" => 1, "b" => 2, "c" => 3];

["a"=>$a, "c"=>$c] = $array;

echo $a,$c; // 13

list()只用于数字索引的数组,且假定数字索引从 0 开始。
当数组不是数字数组而是关联数组时,如:

<?php
$my_array = array('a'=>'Dog','b'=>'Cat','c'=>'Horse');
list($a, $b, $c) = $my_array;
echo 'I have several animals, a '.$a.', a '.$b.' and a '.$c;
?>

结果将会报错

clipboard.png

<?php

$arr = array(
    'a'=>4,
    'b'=>2,
);

list($a,$b) = array_values($arr);

echo $a.','.$b;

将关联数组转换成索引数组

有个东西叫each

<?php
$my_array = array('a'=>'Dog','b'=>'Cat','c'=>'Horse');
list($a, $b, $c) = each($my_array);
echo 'I have several animals, a '.$a.', a '.$b.' and a '.$c;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题