array_filter ()、array_map ()、array_walk () 區別?容易記混淆!!!

Laravel技術社群發表於2020-04-21

array_filter()、
array_map()、
array_walk()
用法和區別,有了他我們在開發中就不用去寫那麼多迴圈操作了,而且效率比迴圈取值更快。

具體用法

public function test(){
        $arr = ['a',0,'b','c',1,2,3,4,5,6,7];

        //過濾掉所有的數字,只要字串  減少自己迴圈的必要
        $new_arr = array_filter($arr,function($v){
            if(is_string($v)){
                return $v;
            }
        });

        print_r($new_arr);
        //返回結果
        // Array ( [0] => a [2] => b [3] => c )


        $arr1 = [1,2,3,4,5];
        $arr2 = [6,7,8,9,10,55];

        //函式寫前面,陣列引數寫後面   2個陣列的計算,也不需要自己迴圈計算
        $new_arr = array_map(function($val1,$val2){
           return $val1 + $val2;
        },$arr1,$arr2);

        var_dump($new_arr);
        //返回結果
        //array (size=5)
        //  0 => int 7
        //  1 => int 9
        //  2 => int 11
        //  3 => int 13
        //  4 => int 15
        //  5 => int 55

        //將陣列中的元素用於某種操作
        $arr = ['a','b','c','d','e','f',8];

        array_walk($arr,function($val,$key){
            echo "{$key} is {$val} <br/>";
        });
        //返回結果
        // 0 is a 
        // 1 is b 
        // 2 is c 
        // 3 is d 
        // 4 is e 
        // 5 is f 
        // 6 is 8 

        //改變陣列中的值,傳參的時候使用引用   同意加個連線符3
        array_walk($arr,function(&$val,$key){
            $val = $val . 3;
        });

        var_dump($arr);
      // array (size=7)
      // 0 => string 'a3' (length=2)
      // 1 => string 'b3' (length=2)
      // 2 => string 'c3' (length=2)
      // 3 => string 'd3' (length=2)
      // 4 => string 'e3' (length=2)
      // 5 => string 'f3' (length=2)
      // 6 => string '83' (length=2)
    }

從以上的程式碼中,看出什麼問題來了嗎?少去開發中的很多迴圈,從而達到想要的效果。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
讓程式設計成為一種習慣!

相關文章