稀裡糊塗系列之list函式妙用

符權發表於2018-10-25

...

1、前言

實習也有小半年了,工作過程中真的學到了很多東西。今天一個在百詞斬實習(前端)的死黨跟我秀,說他昨天發的一篇文章是熱榜第一,嘚瑟得都快上天了: juejin.im/post/5bcd9e…

我手癢了,所以把昨天工作過程中遇到的一個小問題拿出來拋磚引玉,如有不對的地方,請大佬斧正。

2、場景

我們在實現函式的時候,往往只有一個返回值,但有的時候這不能滿足我們的需求。回想起當年c/c++的指標和引用,用得不亦樂乎,怎一個“爽”字了得啊。

當然,php也有引用,不知道為啥,反正我用得很不爽(強迫症)。但這不是本篇文章的重點,以後再說。

php語言的陣列算是這門語言最有魅力的地方,在處理上述問題時,完全可以把所有的東西打包成一個陣列返回。

例如:

$x = null;
$y = null;
function foo($x, $y)
{
    $x = ['a', 'b', 'c'];
    $y = [23, 12, 8, 17];
    
    return [
        'x' => $x,
        'y' => $y
    ];
    
    // 或者這樣:(這個函式也很方便,有興趣的小盆友可以自己google)
    // return compact($x, $y);
}

$z = foo($x, $y);
$x = $z['x'];
$y = $z['y'];
複製程式碼

3、list()函式

list()這個函式比較冷門吧,我是在看某個框架原始碼的時候發現的,大佬可以略過,菜鳥可以看一看。用法如下:

array list ( mixed $var [, mixed $... ] )

官方文件中是這樣寫的:“array() 一樣,list()不是真正的函式,而是語言結構。 list() 可以在單次操作內就為一組變數賦值。

Note: list() 僅能用於數字索引的陣列,並假定數字索引從 0 開始。 並且,php5.6 和 php7 版本的 list() 用法有變化

// 5.6版本
list($z, $y, $x) = array('x', 'y', 'z');

// 7.0+版本
list($x, $y, $z) = array('x', 'y', 'z');
複製程式碼

官方連結:

4、“茴”字的第二種寫法

$x = null;
$y = null;
function foo($x, $y)
{
    $x = ['a', 'b', 'c'];
    $y = [23, 12, 8, 17];
    
    return [$x, $y];
}

list($x, $y) = foo($x, $y);
複製程式碼

5、後記

額,貌似也就只減少了幾行程式碼......

其中提到了 compact 函式,還有與之對應的 extract 函式。

感興趣的還有 explodeimplode 函式......應該能或多或少提高點工作效率吧

寫了一大堆又感覺啥都沒寫到,稀裡糊塗的-_-!

相關文章