標籤:name 回調 sep function uniq 檔案名稱 star arc data
/** * 返回當前運行檔案名稱 * @acces private * @return string */ private function run_filename() { $tmparr = explode(DIRECTORY_SEPARATOR,__FILE__); return end($tmparr); }//例: $this->run_filename();//返回當前檔案名稱
/** * 遞迴一維重複數組值 * @以鍵名為數量值 * @acces private * @return array */ private function recursion_arr($arr,$data=[]) { $unique_arr = array_unique ( $arr ); $repeat_arr = array_diff_assoc ( $arr, $unique_arr ); foreach(array_unique($repeat_arr) as $repeat_arr_val) { $repeat_arr_key = array_search($repeat_arr_val,$unique_arr); unset($unique_arr[$repeat_arr_key]); } $start_count = count($repeat_arr); $tmp = array_unique($repeat_arr); $executed_count = count($tmp); $data[] = $unique_arr; if($start_count > $executed_count) { //如果有相同的值,繼續回調 $result = $this->recursion_arr($repeat_arr,$data); return $result; //一層一層傳上來 }else{ if($repeat_arr) { $data[] = $repeat_arr; } return $data; //直到底層開始返回結果 } }
//例:$arr = array( 0=>1, 1=>2, 2=>2, 3=>3, 4=>3, 5=>3, 6=>4, 7=>4, 8=>4, 9=>4,);$this->recursion_arr($arr);//結果:array( 0=>array( 0=>1 ), 1=>array( 0=>2, 1=>2 ), 2=>array( 0=>3, 1=>3, 2=>3 ), 3=>array( 0=>4, 1=>4, 2=>4, 3=>4 ));
php 幾個演算法