PHP常用函數封裝
阿新 • • 發佈:2018-12-30
字符 文件屬性 source filename 更新 rtrim( 冒泡排序 個數 隊列
PHP常用函數封裝
//二分查找 function bin_sch($array, $low, $high, $k) { if ($low <= $high) { $mid = intval(($low + $high) / 2); if ($array[$mid] == $k) { return $mid; } elseif ($k < $array[$mid]) { return bin_sch($array, $low, $mid - 1, $k); } else { return bin_sch($array, $mid + 1, $high, $k); } } return -1; } //順序查找(數組裏查找某個元素) function seq_sch($array, $n, $k) { $array[$n] = $k; for ($i = 0; $i < $n; $i++) { if ($array[$i] == $k) { break; } } if ($i < $n) { return $i; } else { return -1; } } //線性表的刪除(數組中實現) function delete_array_element($array, $i) { $len = count($array); for ($j = $i; $j < $len; $j++) { $array[$j] = $array[$j + 1]; } array_pop($array); return $array; } //冒泡排序(數組排序) function bubble_sort($array) { $count = count($array); if ($count <= 0) return false; for ($i = 0; $i < $count; $i++) { for ($j = $count - 1; $j > $i; $j--) { if ($array[$j] < $array[$j - 1]) { $tmp = $array[$j]; $array[$j] = $array[$j - 1]; $array[$j - 1] = $tmp; } } } return $array; } //快速排序(數組排序) function quick_sort($array) { if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i = 1; $i < count($array); $i++) { if ($array[$i] <= $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); } //獲得文件屬性 $file是文件路徑如$_SERVER[‘SCRIPT_FILENAME‘],$flag文件的某個屬性 function getFileAttr($file, $flag) { if (!file_exists($file)) { return false; } switch ($flag) { case ‘dir‘: if (is_file($file)) return dirname($file); return realpath($file); break; case ‘name‘: if (is_file($file)) return basename($file); return ‘-‘; break; case ‘size‘: if (is_file($file)) return filesize($file); return ‘-‘; break; case ‘perms‘: return substr(sprintf(‘%o‘, fileperms($file)), -4);; break; case ‘ower‘: return fileowner($file); break; case ‘owername‘: $ownerInfo = posix_getpwuid(fileowner($file)); return isset($ownerInfo[‘name‘]) ? $ownerInfo[‘name‘] : false; break; case ‘groupname‘: $ownerInfo = posix_getpwuid(filegroup($file)); return isset($ownerInfo[‘name‘]) ? $ownerInfo[‘name‘] : false; break; case ‘ctime‘: return filectime($file); break; case ‘mtime‘: return filemtime($file); break; case ‘atime‘: return fileatime($file); break; case ‘suffix‘: if (is_file($file)) return substr($file, strrpos($file, ‘.‘) + 1); return ‘-‘; break; default: return false; break; } } /** * 整理json格式字符串數據 * @param string $json json格式字符串數據 * @param bool|false $assoc * @param int $depth * @param int $options * @return mixed */ public function json_clean_decode($json, $assoc = false, $depth = 512, $options = 0) { $json = str_replace(array("\n", "\r"), "", $json); $json = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t](//).*)#", ‘‘, $json); $json = preg_replace(‘/([{,]+)(\s*)([^"]+?)\s*:/‘, ‘$1"$3":‘, $json); $json = preg_replace(‘/(,)\s*}$/‘, ‘}‘, $json); if (version_compare(phpversion(), ‘5.4.0‘, ‘>=‘)) { $json = json_decode($json, $assoc, $depth, $options); } elseif (version_compare(phpversion(), ‘5.3.0‘, ‘>=‘)) { $json = json_decode($json, $assoc, $depth); } else { $json = json_decode($json, $assoc); } return $json; } /** * 判斷$strJson是否是一個有效的json格式字符串 * @param $strJson * @return bool */ public function isValidJson($strJson) { json_decode($strJson); return (json_last_error() === JSON_ERROR_NONE); } /** * 去掉字符串中的斜線(單斜線和雙斜線) * @param string $string * @return string */ public static function removeslashes($string = ‘‘) { $string = implode("", explode("\\", $string)); return stripslashes(trim($string)); } //去除數組中的單斜線 function stripslashes_deep($value) { $value = is_array($value) ? array_map(‘stripslashes_deep‘, $value) : stripslashes($value); return $value; } //入庫添加斜線 防sql註入 function add_slashes_recursive( $variable ) { if ( is_string( $variable ) ) return addslashes( $variable ) ; elseif ( is_array( $variable ) ) foreach( $variable as $i => $value ) $variable[ $i ] = add_slashes_recursive( $value ) ; return $variable ; } //頁面顯示時去掉數據庫中數據的斜線 function strip_slashes_recursive( $variable ) { if ( is_string( $variable ) ) return stripslashes( $variable ) ; if ( is_array( $variable ) ) foreach( $variable as $i => $value ) $variable[ $i ] = strip_slashes_recursive( $value ) ; return $variable ; } 數據庫操作 /** * 連接MYSQL函數,需要在連接的時候傳遞一個數組 * @param array $config * @return resource */ function connect1 ($config){ //連接mysql $link=@mysql_connect($config[‘host‘],$config[‘username‘],$config[‘password‘]) or die (‘數據庫連接失敗<br/>ERROR ‘.mysql_errno().‘:‘.mysql_error()); //設置字符集 mysql_set_charset($config[‘charset‘]); //打開指定的數據庫 mysql_select_db($config[‘dbName‘]) or die(‘指定的數據庫打開失敗‘); return $link; } /**建議使用該函數 * 連接MYSQL函數,通過常量的形式來連接數據庫 * 自定義配置文件,配置文件中自定義常量,包含需要使用的信息 * @return resource */ function connect2 (){ //連接mysql $link=@mysql_connect(DB_HOST,DB_USER,DB_PWD) or die (‘數據庫連接失敗<br/>ERROR ‘.mysql_errno().‘:‘.mysql_error()); //設置字符集 mysql_set_charset(DB_CHARSET); //打開指定的數據庫 mysql_select_db(DB_DBNAME) or die(‘指定的數據庫打開失敗‘); return $link; } /* array( ‘username‘=>‘king‘, ‘password‘=>‘123123‘, ‘email‘=>‘[email protected]‘ ) */ /** * 插入記錄的操作 * @param array $array * @param string $table * @return boolean */ function insert($array,$table){ $keys=join(‘,‘,array_keys($array)); $values="‘".join("‘,‘", array_values($array))."‘"; $sql="insert {$table}({$keys}) VALUES ({$values})"; $res=mysql_query($sql); if($res){ return mysql_insert_id(); }else{ return false; } }/** * MYSQL更新操作 * @param array $array * @param string $table * @param string $where * @return number|boolean */ function update($array,$table,$where=null){ foreach ($array as $key=>$val){ $sets.=$key."=‘".$val."‘,"; } $sets=rtrim($sets,‘,‘); //去掉SQL裏的最後一個逗號 $where=$where==null?‘‘:‘ WHERE ‘.$where; $sql="UPDATE {$table} SET {$sets} {$where}"; $res=mysql_query($sql); if ($res){ return mysql_affected_rows(); }else { return false; } }/** * 刪除記錄的操作 * @param string $table * @param string $where * @return number|boolean */ function delete($table,$where=null){ $where=$where==null?‘‘:‘ WHERE ‘.$where; $sql="DELETE FROM {$table}{$where}"; $res=mysql_query($sql); if ($res){ return mysql_affected_rows(); }else { return false; } } /** * 查詢一條記錄 * @param string $sql * @param string $result_type * @return boolean */ function fetchOne($sql,$result_type=MYSQL_ASSOC){ $result=mysql_query($sql); if ($result && mysql_num_rows($result)>0){ return mysql_fetch_array($result,$result_type); }else { return false; } } /** * 得到表中的所有記錄 * @param string $sql * @param string $result_type * @return boolean */ function fetchAll($sql,$result_type=MYSQL_ASSOC){ $result=mysql_query($sql); if ($result && mysql_num_rows($result)>0){ while ($row=mysql_fetch_array($result,$result_type)){ $rows[]=$row; } return $rows; }else { return false; } }/**取得結果集中的記錄的條數 * @param string $sql * @return number|boolean */ function getTotalRows($sql){ $result=mysql_query($sql); if($result){ return mysql_num_rows($result); }else { return false; } } /**釋放結果集 * @param resource $result * @return boolean */ function freeResult($result){ return mysql_free_result($result); } /**斷開MYSQL * @param resource $link * @return boolean */function close($link=null){ return mysql_close($link); }/**得到客戶端的信息 * @return string */ function getClintInfo(){ return mysql_get_client_info(); }/**得到MYSQL服務器端的信息 * @return string */ function getServerInfo($link=null){ return mysql_get_server_info($link); } /**得到主機的信息 * @return string */ function getHostInfo($link=null){ return mysql_get_host_info($link); } /**得到協議信息 * @return string */ function getProtoInfo($link=null){ return mysql_get_proto_info($link); } /** * 根據數據中的某一字段排序 * @param array $array 原始數組 * @param $field 數組字段 * @param bool|false $desc */ public function sortArrByField(&$array, $field, $desc = true) { $fieldArr = array(); foreach ($array as $k => $v) { $fieldArr[$k] = $v[$field]; } $sort = $desc ? SORT_DESC : SORT_ASC ; array_multisort($fieldArr, $sort, $array); } //獲得數組中重復的數據 function fetchRepeatMemberInArray($array) { // 獲取去掉重復數據的數組 $unique_arr = array_unique($array); // 獲取重復數據的數組 $repeat_arr = array_diff_assoc($array, $unique_arr); return $repeat_arr; } //PHP實現雙端隊列 class Deque { public $queue = array(); /**(尾部)入隊 **/ public function addLast($value) { return array_push($this->queue,$value); } /**(尾部)出隊**/ public function removeLast() { return array_pop($this->queue); } /**(頭部)入隊**/ public function addFirst($value) { return array_unshift($this->queue,$value); } /**(頭部)出隊**/ public function removeFirst() { return array_shift($this->queue); } /**清空隊列**/ public function makeEmpty() { unset($this->queue); } /**獲取列頭**/ public function getFirst() { return reset($this->queue); } /** 獲取列尾 **/ public function getLast() { return end($this->queue); } /** 獲取長度 **/ public function getLength() { return count($this->queue); } }
PHP常用函數封裝