array_reduce()使用

  这个函数的作用是,把数组中的值循环放到回调函数里处理,结果返回一个单一的值。(applies iteratively the callback function to the elements of the array, so as to reduce the array to a single value.)

这个函数需要两个必须参数和一个可选参数。第一个参数是要操作的数组,第二个是回调函数,第三个是初始值(可选)。

举个例子,比如

function sum($carry, $item)
{
    var_dump($carry);
    var_dump($item);
    echo '<br/>';
    $carry += $item;
    return $carry;
}

$a = array(
    'a' => 1,
    'b' => 2,
    'c' => 3,
    '53' => 4,
    );

var_dump(array_reduce($a, "sum")  );

这个的运行结果:

NULL     int(1)
int(1)    int(2)
int(3)    int(3)
int(6)    int(4)
int(10)

以上表示,回调函数的第一个参数,可以hold住每次循环后的回调执行结果,以供下次循环使用(第一次执行的时候,这个参数取的是array_reduce()的第三个参数:初始值,没有就是null)。第二个参数就是每次循环的数组的值。

最后的结果就返回了single value,就是10~

再来看一个w3c的例子。

function joinstring($v1,$v2)
{
    return $v1 . "-" . $v2;
}

$a=array("Dog","Cat","Horse");

print_r(array_reduce($a,"joinstring"));

这个的返回结果是:-Dog-Cat-Horse

注意字符串前边有个中划线。如果你认真看了第一个例子的说明,这个就不难理解了。

因为array_reduce()没有初始值传入,所以第一次循环时,$v1是null,所以第一次hold住的值就是"-Dog";这下明白了吧哈哈~

原文地址:https://www.cnblogs.com/firstForEver/p/5092334.html