理解php的array_reduce函数

官网的解释

array_reduce — 用回调函数迭代地将数组简化为单一的值

 array_reduce ( array $array , callable $callback , mixed $initial = null ) : mixed

array_reduce() 将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。

参数说明:

  • array

    输入的 array。

  • callback

    callback ( mixed $carry , mixed $item ) : mixed

    • carry 携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial

    • item 携带了本次迭代的值。

  • initial

    如果指定了可选参数 initial,该参数将在处理开始前使用,或者当处理结束,数组为空时的最后一个结果。

 

我的理解

  • 过程:

    • array_reduce函数将第一个参数(数组)中元素的值依次拿出来,每拿一个元素的值就会调用第二个参数(回调函数)。

    • 就是说,数组中有几个元素,回调函数就会被调用几次。

    • 回调函数被调用的时候,第一个参数是上次被调用时返回的值,第二个参数是对应的被从数组中拿出的元素的值。

    • 回调函数第一次被调用时,array_reduce的第三个参数存在时会被作为初始值当作时回调的第一个参数使用,否则这次回调的第一个参数为NULL。

  • 通常第二个参数不直接使用匿名函数,对应的做法:使用某一具名函数的名称,并在array_reduce被调用之前声明这个函数。

    <?php

    function callback($上一次被调用的值, $本次调用的值){
    // 具体的逻辑处理
    return $处理后的结果;
    }
    array_reduce($需要依次处理的数组, 'callback', $回调第一次被调用时传给第一个参数的默认值)

总结

其实官网解释说的很清楚,只是我一直不能理解“迭代”的意思。当我把我的理解写出来之后我慢慢明白了迭代的意思。不过还是做个记录吧。

posted @ 2021-01-11 15:12  Aienming  阅读(494)  评论(0)    收藏  举报