<?php // 配列を取得してゴール $result = getArr( [ 'datatype'=>'array', 'use'=>['action'] ] ); var_dump( $result ); // $basesから$argsの指定に応じて配列を取得する function getArr( $args ){ $bases = [ [ 'key'=>'follwoers_arr', 'label'=>'フォロワー', 'datatype'=>'arr', 'use'=>['front','action'] ], // ここに追加したい [ 'key'=>'follwoees_arr', 'label'=>'フォロー中', 'datatype'=>'arr', 'use'=>['front','action'] ], // ここに追加したい [ 'key'=>'age', 'label'=>'年齢', 'datatype'=>'str', 'use'=>['profile'] ], ]; // 「カウント情報」を「ここに追加したい」の行に追加したい $row_arr = getArr( [ 'datatype'=>'arr', 'use'=>['action'] ] ); $count_row = []; foreach( $row_arr as $row ){ foreach( $row as $key=>$val ){ if( $key=='key' ){ $key_all = str_replace( '_arr', '_count_all', $val ); $key_week = str_replace( '_arr', '_count_week', $val ); $bases[] = [ 'key'=>$key_all, 'label'=>'全期間', 'datatype'=>'str', 'use'=>['auto'] ]; // カウント情報 $bases[] = [ 'key'=>$key_week, 'label'=>'一週間', 'datatype'=>'str', 'use'=>['auto'] ]; // カウント情報 } } } // 引数$argsと一致する行の配列を返す $result = []; foreach ($bases as $base){ if (isMatch($args, $base)) { $result[] = $base; } } return $result; } // 引数$argsと一致する行の配列を返す function isMatch($args, $set) { foreach ($args as $key => $vals) { if (!array_key_exists($key, $set)) { return false; } if (is_array($vals)) { foreach ($vals as $val) { if (!in_array($val, $set[$key], true)) { return false; } } } else { if ($vals !== $set[$key]) { return false; } } } return true; }
You have javascript disabled. You will not be able to edit any code.