//二分查找
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'=>'dh@qq.com'
) */ /**
* 插入记录的操作
* @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函数封装,有排序和数据库操作函数的更多相关文章

  1. ecshop数据库操作函数

    ecshop数据库操作函数 分类: ecshop和dede2013-09-23 14:02 1716人阅读 评论(0) 收藏 举报 本章我们将结合eschop二次开发一些常见的开发例子.来谈谈ecsh ...

  2. 3、PHP中常用的数据库操作函数解析

    mysql_connect  连接数据库 mysql_select_db 选择需要操作的数据库 mysql_query 执行数据库操作语句 mysql_fetch_array 以数组的形式返回每行查询 ...

  3. 我的一个PLSQL函数 先查询再插入数据库的函数 动态SQL拼接查询条件、通用游标、记录定义(封装部分查询字段并赋值给游标)、insert select 序列、常量【我】

    先查询再插入数据库的函数 CREATE OR REPLACE FUNCTION F_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_prod_ ...

  4. signal函数、sigaction函数及信号集(sigemptyset,sigaddset)操作函数

    信号是与一定的进程相联系的.也就是说,一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如,一个进程可以忽略某些信号而只处理其他一些信号:另外,一个进程还可以选择如何处理信号.总之,这些总与特定 ...

  5. [转]PHP语言的数据库操作函数的理解

    就我接触到的R语言以及对数据库的操作来说,基本的操作其实也就是CRUD(Create, Read, Update, Delete). 习惯了之后,对PHP中的MYSQLI操作函数感觉很不适应,查询或者 ...

  6. phpcms v9 中的数据库操作函数

    1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')   返回 ...

  7. phpcms v9 数据库操作函数

    表明默认当前load_model('xxxx')模块所在表名xxxx 若要指定表名  则:操作在mysql.class.php中$this->db->select(...) 1.查询  $ ...

  8. **汇总CodeIgniter(CI)的数据库操作函数

    //查询: $query = $this->db_query("SELECT * FROM table"); ================================ ...

  9. Code Igniter数据库操作函数大全

    查询 $query = $this->db_query("SELECT * FROM table"); ==================================* ...

随机推荐

  1. [CSP-S模拟测试]:打表(猜测题意+结论)

    题目传送门(内部题139) 输入格式 第一行两个整数$k,ans$,表示内存地址$A$的位数,以及答案所在的内存地址. 接下来一行$2^k$个整数,分别表示内存地址$0...2^k-1$上的值. 输出 ...

  2. Java常考面试题整理(二)

    21.Iterator和ListIterator的区别是什么? 参考答案: 下面列出了他们的区别: Iterator可以用来遍历Set和List集合,但是ListIterator只能用来遍历List. ...

  3. 基于dubbo的分布式系统(一)安装docker

    1.安装过程参考: #uname -r  查看内核是否高于3.10 #sudo yum update root权限登陆确保yum包最新 #sudo yum remove docker docker-c ...

  4. hdjs---后盾网requireJS课程

    hdjs---后盾网requireJS课程 一.总结 一句话总结: requireJS是js端模块化开发,主要是实现js的异步加载,和管理模块之间的依赖关系,便于代码的编写和维 1.requireJS ...

  5. shell脚本之awk、sed、grep案例

    1.BEGIN END用法user        DIR,内容显示用户名称.用户家目录   $NF为awk的内置变量,表示最后一行,$(NF-1)就表示倒数第二行,最后打印页脚 页眉显示 cat /e ...

  6. List<Map>集合根据Map里某个key对List集合重新排序介绍

    例1:List集合数据参考形式如下: [{GLXXLX=03,GLXXBH=20160226105812003},{GLXXLX=01,GLXXBH=20160226105812001},{GLXXL ...

  7. android 播放音乐媒体文件(四)

    mMediaPlayer 播放网络mp31.异步准备使用 mMediaPlayer.prepareAsync(); 2.监听prepareAsync结果使用MediaPlayer.OnPrepared ...

  8. 【转】How-to: Enable User Authentication and Authorization in Apache HBase

    With the default Apache HBase configuration, everyone is allowed to read from and write to all table ...

  9. Eureka入门一(了解概念)

    Eureka注册中心(8761端口) IDEA(开发工具) 1,创建项目勾选Eureka Server 2, 创建yml文件,拷贝配置,下面配置必须为false,意为,该项目不要作为客户端注册,因为本 ...

  10. 第五章 SpringCloud之Eureka-Client使用RestTemplate实现服务之间的调用

    注意:这个章节,请结合前几章节一起使用,因为其要调用上一章节的服务 1.pom.xml <?xml version="1.0" encoding="UTF-8&qu ...