我可以跳过数组元素与'列表'分配


Can I skip array elements with `list` assignment?

假设我有一个函数返回以下数组:

function fruits(){
  $arr = array('apple','orange','banana','pear');
  return $arr;
}

我想将第三和第四个数组元素赋值给变量,而不使用临时变量:

list(NULL,NULL,$banana,$pear) = fruits();

这段代码将不能工作,但它将显示我想使用list结构的方式的想法。

我想使用list的原因如下:

  1. 我使用PHP 5.3,所以像fruits()[2]这样的结构将无法工作

  2. 我可以在一行相当可读的代码中执行更多赋值

  3. 我想跳过临时变量以减少代码大小并增加其可读性

那么是否有可能使用list并跳过一些数组元素?

php 5.5.14

function fruits(){
  $arr = array('apple','orange','banana','pear');
  return $arr;
}
list(,,$banana,$pear) = fruits();
echo $banana; // banana

是的,您可以跳过元素:只需省略变量名称:

list(,,$banana,$pear) = fruits();

PHP 7.1+

[,,$banana,$pear] = fruits();