array_reduce

Posted by muchag | PHP | 2015-11-10 (火) 14:00:40

array_reduce は、配列要素を集約して単一の結果を返す関数。
階層構造の再帰処理 で参考にさせていただいたソースに使われていた。

【環境】
php:5.4.7
array_reduce

mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )

配列 array の各要素に callback 関数を繰り返し適用し、 配列を一つの値に減らします。

php:array_reduce

第1引数:当該配列
第2引数:コールバック関数。無名関数可
第3引数:戻り値の初期値。省略可。省略した場合はデフォルトが null

イメージ

配列について、foreach でグルグル回す代わりに使う。

利用例
  1. // コールバック関数。その1
  2. function sum($carry, $item)
  3. {
  4.     $carry += $item;
  5.     return $carry;
  6. }
  7.  
  8. // コールバック関数。その2
  9. function product($carry, $item)
  10. {
  11.     $carry *= $item;
  12.     return $carry;
  13. }
  14.  
  15. $a = array(1, 2, 3, 4, 5);
  16. $x = array();
  17.  
  18. var_dump(array_reduce($a, "sum")); // int(15)
  19. var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5
  20. var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
コールバック関数

関数名そのものを文字列にて渡す。

  1. var_dump(array_reduce($a, "sum"));
無名関数

関数名を指定するのではなく、無名関数にてその場に定義してもOK。

  1. var_dump(array_reduce($a, function sum($carry, $item) {
  2.     $carry *= $item;
  3.     return $carry;
  4.   }
  5. ));
引数

$carry:戻り値。処理の間保持される
$item:配列の各要素。foreach($array as $key => $val) の $val

PHP | 2015-11-10 (火) 14:00:40 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment