可以在最近即将推出的PHP中使用关联数组以某种方式列出()吗?

rsk*_*k82 39 php associative-array list

例:

list($fruit1, $fruit2) = array('apples', 'oranges');
Run Code Online (Sandbox Code Playgroud)

上面的代码当然可行,但代码如下:

list($fruit1, $fruit2) = array('fruit1' => 'apples', 'fruit2' => 'oranges');
Run Code Online (Sandbox Code Playgroud)

得到: Notice: Undefined offset: 1 in....

有没有办法以某种方式用列表来引用命名键list('fruit1' : $fruit1),你有没有看到这样的计划用于将来的版本?

K-G*_*Gun 53

使用PHP 7.1 ;

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

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

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

print $fruit1; // apple
Run Code Online (Sandbox Code Playgroud)


小智 43

使用array_values()怎么样?

<?php
   list($fruit1, $fruit2) = array_values( array('fruit1'=>'apples','fruit2'=>'oranges') );
?>
Run Code Online (Sandbox Code Playgroud)

  • 如果数组中的值以相反的顺序排列,则不起作用,例如`array('fruit2'=>'apples','fruit1'=>'oranges')`.'fruit2'的值分配为$ fruit1,反之亦然. (4认同)

lan*_*ons 42

编辑:这种方法在当天很有用(它在7年前确实得到了回答),但是请参阅下面的K-Gun的答案,以获得更新的PHP 7+语法更好的方法.

试试这个extract()功能.它将创建所有键的变量,并将其分配给其关联值:

extract(array('fruit1' => 'apples', 'fruit2' => 'oranges'));
var_dump($fruit1);
var_dump($fruit2);
Run Code Online (Sandbox Code Playgroud)

  • 请不要使用`extract`.IDE无法处理它.它可以创建[其他问题的主机.](http://stackoverflow.com/a/829454/178910) (11认同)
  • @Jurik,你尝试过`list()`和`array_values()`吗?你是对的 - 这个功能很奇怪. (3认同)