PHP'nin array_reduce tamsayı üçüncü parametre için Geçici Çözümler

3 Cevap php

3 Cevap

Eğer $initial değerini geçemiyor, PHP NULL varsayar ve işlevine NULL geçecek. Yani olası bir çözüm NULL kodunuzda için kontrol etmektir:

function wrapper($a, $b) {
    if ($a === null) {
        $a = "One";
    }
    return str_reduc($a, $b);
}

$arr = array('Two', 'Three', 'Four');
echo array_reduce($arr, 'wrapper');

Üçüncü parametre isteğe bağlıdır

mixed array_reduce (array $ girdi, callback $ işlev [, int $initial ])

bkz http://us2.php.net/manual/en/function.array-reduce.php

Sadece kullanın:

$arr = array('One', 'Two', 'Three', 'Four');
echo array_reduce($arr, 'str_reduc');

Eğer lider virgül, kullanmak istemiyorsanız

function str_reduc($return, $extra) {
    if (empty($return))
        return $extra;
    return $return .= ', ' . $extra;
}

Eğer yapmak istediğiniz tüm virgül ile dizeleri katılmak ise tabii ki, çöktüğünü kullanın

echo implode(", ", $arr);

bkz http://us2.php.net/manual/en/function.implode.php

Kendi array_reduce işlev yazabilirsiniz. Burada hızla kızıyorlar biri:

function my_array_reduce($input, $function, $initial=null) {
  $reduced = ($initial===null) ? $initial : array_shift($input);
  foreach($input as $i) {
    $reduced = $function($reduced, $i);
  }
  return $reduced;
}