PHP 使用 array_map 替代 foreach

講個 PHP 的騷操作。論如何實現:把二維數組內某二維元素的值,單獨提出來組成一維數組。

0x00 傳統操作

$pieces = [];
foreach($whole as $item)
{
    $pieces[] = $item['foo'];
}
return $pieces;

0x01 騷操作

return array_map(
    function ($item) { return $item['foo']; },
    $whole
);

省掉兩個變量($pieces$item),對於業務邏輯比較複雜的位置,省一個變量說不定就少死十個腦細胞…

PHP 內,函數內部變量沒有作用域之分,只有出函數後纔會銷燬。所以 $item 在匿名函數內是外部無法訪問的。

0x02 拓展

array_map 其實還有不少用途,需要遍歷數組每個元素的「值」的時候,都可以派上用場。

但需要遍歷 Key => Value 形式的關聯數組,該怎麼操作呢?

return array_map(
    function callback($k, $v) { ... },
    array_keys($array),
    $array
);

搞定。

0x03 參考

PHP 文檔 - array_map

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章