array_reduce将数组简化为单个值。基本上,Thearray_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); //默认值必须设置为true
结果:true
任何项目少于100
$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){ return $carry || $item < 100; }, false);//默认值必须设置为false
结果:true
像爆裂($array,$piece)
$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){ return !$carry ? $item : $carry . "-" . $item ; });
结果:"hello-world-PHP-language"
如果采用爆破方法,则源代码将为:
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"