//二分查找
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. js实现第一次打开网页弹出指定窗口(常用功能封装很好用)

    js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...

  2. c++常用功能封装

    C++文件读写的封装 在C++开发中,文件读写是很常用的功能,出于代码复用的考虑,将它们进行封装. 其中,默认读写的文件是文本文件,并且需要按行处理.调用者只需要关注读取出来的每一行的处理方式.写文件 ...

  3. cocos2D-X LUA 常用功能封装和工作经验的一些解决方案

    --[[ Packaging_KernelEngine.h 文件说明:所有对象在建立时位置是优先的,传入位置参数必须cc.p(X,Y) CurObj:表示要传入当前的对象 将3.10 lua api ...

  4. cocos2D-X 常用功能封装

    Packaging_Kernel.h #pragma once #include <string> #include <map> #include <vector> ...

  5. echarts常用功能封装|抽象为mixin

    目前已解锁以下功能: [x] 初始化echarts(initChart) [x] 获取echarts参数配置(getOption) [x] 生成echarts图表(setOption) [x] 监听r ...

  6. EXCEL2016 OLE/COM开发-常用功能封装代码

    hpp #pragma once #include "stdafx.h" #include "CApplication.h" #include "CW ...

  7. JavaScript 常用功能总结

    小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...

  8. Android android-common 常用功能和工具集合

    本文内容 环境 android-common 项目结构 演示 android-common 参考资料 android-common 主要包括如下内容: 缓存,包括图片缓存.预取缓存.网络缓存. 公共 ...

  9. 开源三维地球GIS引擎Cesium常用功能的开发

    Cesium是一个非常优秀的三维地球GIS引擎(开源且免费).能够加载各种符合标准的地图图层,瓦片图.矢量图等都支持.支持3DMax等建模软件生成的obj文件,支持通用的GIS计算:支持DEM高程图. ...

随机推荐

  1. 2017-5-14 湘潭市赛 Partial Sum 给n个数,每次操作选择一个L,一个R,表示区间左右端点,该操作产生的贡献为[L+1,R]的和的绝对值-C。 0<=L<R<=n; 如果选过L,R这两个位置,那么以后选择的L,R都不可以再选择这两个位置。最多操作m次,求可以获得的 最大贡献和。

    Partial Sum Accepted : Submit : Time Limit : MS Memory Limit : KB Partial Sum Bobo has a integer seq ...

  2. CMake 简介与使用

    cross platform make的缩写. 是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目文件.通过编写CMakeLists ...

  3. MySQL - 统计每个月生日的人数

    Person表定义如下: create table person(id int primary key auto_increment, birthday datetime); Person 数据如下: ...

  4. Servlet 环境设置

    开发环境是您可以开发.测试.运行 Servlet 的地方. 就像任何其他的 Java 程序,您需要通过使用 Java 编译器 javac 编译 Servlet,在编译 Servlet 应用程序后,将它 ...

  5. 【直播预告】7月18日3D游戏引擎免费公开课答疑,參与送C币!

    喜讯喜讯! 为了酬谢广大学员.CSDN学院特推出iOS和3D游戏引擎开发免费技术答疑公开课,让您度过一个充实的暑假~ 參与本次公开课,即有机会获得50C币! 答疑公开课时间:7月18日 晚7:30-9 ...

  6. hive表信息查询:查看表结构、表操作等

    转自网友的,主要是自己备份下 有时候不记得! 问题导读:1.如何查看hive表结构?2.如何查看表结构信息?3.如何查看分区信息?4.哪个命令可以模糊搜索表 1.hive模糊搜索表 show tabl ...

  7. CAP theorem

    https://en.wikipedia.org/wiki/CAP_theorem

  8. standard pbr(二)

    下一步看像素着色器代码 half4 fragBase (VertexOutputForwardBase i) : SV_Target { return fragForwardBaseInternal( ...

  9. 【题解】Digit Tree

    [题解]Digit Tree CodeForces - 716E 呵呵以为是数据结构题然后是淀粉质还行... 题目就是给你一颗有边权的树,问你有多少路径,把路径上的数字顺次写出来,是\(m\)的倍数. ...

  10. Docker容器/镜像查看及删除操作

    列出所有正在运行的容器 docker ps 暂停容器 docker stop <name> 删除容器 docker rm <name> 停止所有container docker ...