概要
閲覧数:1177
投稿日:2015-11-23
更新日:2015-11-23
三次元配列の「三次元目要素数」だけをカウント
関数の中でstatic変数を宣言すると?
・その関数が初めて呼ばれた時にのみ初期化をし、それ以降は何度呼ばれても初期化処理をスキップしつつ、値を保持する
コード
$ary = array();//配列の初期化 $ary[0][0][0] = 'ブラウン'; $ary[0][1][0] = 'レッド'; $ary[0][2][0] = 'ブルー'; $ary[0][2][1] = 'スカイブルー'; $ary[1][0][0] = 'うちはサスケ'; $ary[1][0][1] = '奈良シカマル'; $ary[1][0][2] = '猿飛アスマ'; $ary[1][1][0] = '風魔小次郎'; $ary[1][1][1] = '霧風'; $ary[1][1][2] = '小龍'; $ary[1][3][0] = '影丸'; print_r($ary); function child_count($ary=array()){ static $count = 0; foreach($ary as $child){ if(is_array($child)){ child_count($child); }else{ $count++; } } return $count; } echo child_count($ary);
結果
Array ( [0] => Array ( [0] => Array ( [0] => ブラウン ) [1] => Array ( [0] => レッド ) [2] => Array ( [0] => ブルー [1] => スカイブルー ) ) [1] => Array ( [0] => Array ( [0] => うちはサスケ [1] => 奈良シカマル [2] => 猿飛アスマ ) [1] => Array ( [0] => 風魔小次郎 [1] => 霧風 [2] => 小龍 ) [3] => Array ( [0] => 影丸 ) ) ) 11