//二分查找
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. SPP框架的基本使用

    入职两天 Day1.Day2: 学习SPP框架 SPP是什么? SPP提供了一系列的基础功能,是一个通用的网络服务器运行框架.主要由proxy,worker,controller三个模块组成.它提供A ...

  2. openwrt 下python程序后台运行,并将打印信息保存文件

    python -u gw20191223.py  > test.log 1 2 & "python" 表示执行python代码 "-u" 表示不启 ...

  3. 广工2017校赛-F-- tmk找三角

    http://gdutcode.sinaapp.com/problem.php?cid=1056&pid=5 Description 有一棵树,树上有只tmk.他在这棵树上生活了很久,对他的构 ...

  4. A. Even Substrings

    A. Even Substrings time limit per test 0.5 seconds memory limit per test 256 megabytes input standar ...

  5. LeetCode 16. 最接近的三数之和(3Sum Closest)

    题目描述 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 例 ...

  6. LeetCode 120. 三角形最小路径和(Triangle)

    题目描述 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径 ...

  7. win7环境下mongodb分片和移除

    本文主要介绍在一台win7电脑上模拟mongo分片.如果有多台服务器,可以将每个mongo部署在单台电脑上.我们将配置3个mongo分片,3个配置服务器,1个路由服务器.如下图所示进行配置,介绍如何增 ...

  8. leetcode-easy-string-28 Implement strStr()

    mycode   77.15% class Solution(object): def strStr(self, haystack, needle): """ :type ...

  9. OpenCV学习笔记(5)——颜色空间转换

    学习如歌对图像进行颜色空间转换,从BGR到灰度图,或者从BGR到HSV等 创建一个程序用来从一幅图像中获取某个特定颜色的物体 1.转换颜色空间 OpenCV中有超过150种进行颜色空间转化的方法,但是 ...

  10. ElasticSearch第五步-.net平台下c#操作ElasticSearch详解

    前面我们讲解了关于ElasticSearch的安装配置,以及CRUD 本章我将讲解怎么使用c#操作ElasticSearch. 首先你需要一定的技术储备,比如:asp.net webapi,mvc,j ...