PHP 的 list() 可以与关联数组一起使用吗?

2022-08-30 10:00:03

例:

list($fruit1, $fruit2) = array('apples', 'oranges');

上面的代码当然工作正常,但下面的代码:

list($fruit1, $fruit2) = array('fruit1' => 'apples', 'fruit2' => 'oranges');

给:Notice: Undefined offset: 1 in....

有没有办法以某种方式用列表来引用命名键,比如,你有没有看到过类似的东西计划在将来发布?list('fruit1' : $fruit1)


答案 1

使用/从 PHP 7.1:

对于键控数组;

$array = ['fruit1' => 'apple', 'fruit2' => 'orange'];

// [] style
['fruit1' => $fruit1, 'fruit2' => $fruit2] = $array;

// list() style
list('fruit1' => $fruit1, 'fruit2' => $fruit2) = $array;

echo $fruit1; // apple

对于无键数组;

$array = ['apple', 'orange'];

// [] style
[$fruit1, $fruit2] = $array;

// list() style
list($fruit1, $fruit2) = $array;

echo $fruit1; // apple

注意:如果可能的话,按版本使用样式,也许列表将来会变成一种新的类型,谁知道呢?[]


答案 2

编辑:这种方法在当时很有用(九年前就被问到并回答了),但请参阅下面的K-Gun的答案,以获得使用更新的PHP 7 +语法的更好方法。

尝试 extract() 函数。它将创建所有键的变量,并将其分配给其关联值:

extract(array('fruit1' => 'apples', 'fruit2' => 'oranges'));
var_dump($fruit1);
var_dump($fruit2);