陣列減少

array_reduce 將陣列減少為單個值。基本上,array_reduce 將使用上次迭代的結果遍歷每個專案,併為下一次迭代生成新值。

用法:array_reduce ($array, function($carry, $item){...}, $defaul_value_of_first_carry)

  • $ carry 是上一輪迭代的結果。
  • $ item 是陣列中當前位置的值。

陣列之和

$result = array_reduce([1, 2, 3, 4, 5], function($carry, $item){
    return $carry + $item;
});

結果:15

陣列中的最大數字

$result = array_reduce([10, 23, 211, 34, 25], function($carry, $item){
        return $item > $carry ? $item : $carry;
});

結果:211

是所有專案超過 100

$result = array_reduce([101, 230, 210, 341, 251], function($carry, $item){
        return $carry && $item > 100;
}, true); //default value must set true

結果:true

是否有任何專案少於 100

$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){
        return $carry || $item < 100;
}, false);//default value must set false

結果:true

像 implode($ array,$ piece)

$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){
        return !$carry ? $item : $carry . "-" . $item ;
});

結果:hello-world-PHP-language

如果製作一個 implode 方法,原始碼將是:

function implode_method($array, $piece){
    return array_reduce($array, function($carry, $item) use ($piece) {
            return !$carry ? $item : ($carry . $piece . $item);
    });
}

$result = implode_method(["hello", "world", "PHP", "language"], "-");

結果:hello-world-PHP-language