今次在下又無聊地編寫一個模擬 GROUP BY 的語法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function array_groupby( $array , $groups ){ if ( count ( $groups ) > 0){ $fields = array (); foreach ( $array as $key => $value ){ $field = array (); $grouped = true; foreach ( $groups as $group ){ if (isset( $value [ $group ])){ $field [ $group ] = $value [ $group ]; } else { $grouped = false; break ; } } if ( $grouped ){ if (in_array( $field , $fields , true)){ unset( $array [ $key ]); } else { array_push ( $fields , $field ); } } else { unset( $array [ $key ]); } } } return array_values ( $array ); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | $array = array ( array ( 'id' => 1, 'age' => 18, 'height' => 180, ), array ( 'id' => 2, 'age' => 22, 'height' => 160, ), array ( 'id' => 3, 'age' => 18, 'height' => 160, ), array ( 'id' => 4, 'age' => 22, 'height' => 180, ), ); $groups = array ( 'age' , ); $array = array_groupby( $array , $groups ); print_r( $array ); |
會將群組化的第一個紀錄成為輸出資料
最後用 array_values($array) 將 index 由 0 重新開始排列
沒有留言 :
張貼留言