PHP中函数其实是一个具有复杂逻辑的代码块,而这种代码块通常可以在很多地方重复使用。函数是使用了一种特殊的结构来将要重复使用的代码进行包裹,后期可以通过定义的函数名字来直接实现重复代码块的调用。
<?php
其他
isset() 变量是否存在
boolean empty() 检查变量是否存在,并判断值是否为非空或非0
void unset() 销毁变量
header(‘Content-Type: text/html; charset=utf-8′);
method_exists($obj, $method) 判断对象的方法是否可用
file_exists($file) 判断文件是否存在
function_exists();
class_exists($class_name);
gettype();获取数据类型
set_magic_quotes_runtime() 0 for off, 1 for on 当遇到反斜杆、单引号,将会自动加上一个反斜杆,保护系统和数据库的安全
ini_set(,);
string getcwd ( void ) 取得当前工作目录
数据类型转换
强制转换
$i = 1;
$j = (int)$i;
settype
$i = 1;
settype($i,’float’);
floatval
$i = 1;
$j = floatval ($i)
安全
function strReplace($str)
{
$strResult = $str;
if(!get_magic_quotes_gpc())//判断设置是否开启
{
$strResult = addslashes($strResult);//转换sql语句特殊字符
}
return $strResult;
}
function quotes($content)
{
//如果magic_quotes_gpc=Off,那么就开始处理
if (!get_magic_quotes_gpc())
{
//判断$content是否为数组
if (is_array($content))
{
//如果$content是数组,那么就处理它的每一个单无
foreach ($content as $key=>$value)
{
$content[$key] = addslashes($value);
}
}
else
{
//如果$content不是数组,那么就仅处理一次
addslashes($content);
}
}
//返回$content
return $content;
}
编码转换
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
iconv();
时间
date_default_timezone_set(“PRC”);
date(“Y-m-d H:i:s”);
time();
date(“Y-m-d H:i:s”,time() 3600)
ini_set(‘date.timezone’, ‘PRC’);
msec sec microtime() 以秒返回时间戳 explode(‘ ‘, microtime())
$mtime = explode(‘ ‘, microtime());
$s = $mtime[1] $mtime[0];
number_format($s,5);//保留5位小数
魔术方法
__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。
__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。
__get() 当试图读取一个并不存在的属性的时候被调用。
__set() 当试图向一个并不存在的属性写入值的时候被调用。
__call() 当试图调用一个对象并不存在的方法时,调用该方法。
__toString() 当打印一个对象的时候被调用
__clone() 当对象被克隆时,被调用
__isset()
__unset()
__autoload($classname)
__sleep()
__wakeup()
系统常量
__FILE__ 当前文件名
__LINE__ 当前行数
__FUNCTION__ 当前函数名
__CLASS__ 当前类名
__METHOD__ 当前对象的方法名
PHP_OS 当前系统
PHP_VERSION php版本
DIRECTORY_SEPARATOR 根据系统决定目录的分隔符 /\
PATH_SEPARATOR 根据系统决定环境变量的目录列表分隔符 ; :
E_ERROR 1
E_WARNING 2
E_PARSE 4
E_NOTICE 8
M_PI 3.141592
$_SERVER
$_ENV 执行环境提交至脚本的变量
$_GET
$_POST
$_REQUEST
$_FILES
$_COOKIE
$_SESSION
$_GLOBALS
输出
echo //Output one or more strings
print //Output a string
print_r() //打印关于变量的易于理解的信息。
var_dump() //打印变量的相关信息
var_export() //输出或返回一个变量的字符串表示
printf(“%.1f”,$num) //Output a formatted string
sprintf() //Return a formatted string
错误处理
@1/0
error_reporting(E_ALL) 显示所有错误
error_reporting(0)
trigger_error(“Cannot divide by zero”, E_USER_ERROR);
try
{
throw new Exception(“执行失败”);
}
catch (Exception $ex)
{
echo $ex;
}
error_reporting(E_ERROR | E_WARNING | E_PARSE); 用来配置错误信息回报的等级
字符串处理
string trim(“eee “) trim (‘ffffe’,’e’) //ltrim rtrim
array explode(“.”, “fff.ff.f”) 按指定字符切割
string implode(“.”, $array) 别名:join 把数组值数据按指定字符连接起来
array str_split(“eeeeeeee”,4) 按长度切割字符串
array split(“-“,”fff-ff-f”) 按指定字符切割
int strlen(‘ffffffff’) 取字符长度
string substr ( string $string , int $start [, int $length ] )
substr($a,-2, 2) 截取字符
int substr_count($text, ‘is’) 字符串出现的次数
string strstr($text, ‘h’) 第一次出现h后的字符串 //别名:strchr
int strpos($text, ‘h’) 第一次出现h的位置
strrpos();最后一次出现h的位置
strrchr(‘aa.jpg’,’.’); .jpg
str_replace(‘a’, ‘ttt’, $t) 把$t里的’a’替换为’ttt’
strtr($t,’is’,’pef’) 把$t中i替换成p,s替换成e,f被忽略
strtr(“hi all, I said hello”, array(“hello” => “hi”)) 把’hello’转换成’hi’
string md5_file(‘1.txt’,false) 文件数据md5加密
string md5()
int strcmp(string str1, string str2) 字符串比较
int strcasecmp(string str1, string str2) 忽略大小写
string str_pad($i, 10, “-=”, STR_PAD_LEFT) 在原字符左边补’-=’,直到新字符串长度为10
STR_PAD_RIGHT
STR_PAD_BOTH
string str_repeat(‘1’, 5) 重复5个1
void parse_str(‘id=11’); echo $id; 将字串符解析为变量
array preg_grep(“/^(\d )?\.\d $/”, array(11.2,11,11.2)) 匹配数据
array preg_split (“/[\s,] /”, “hypertext language,programming”); 按指定的字符切割
array pathinfo(string path [, int options]) 返回文件路径的信息
string basename ( string path [, string suffix] ) 返回路径中的文件名部分
string dirname ( string path ) $_SERVER[PHP_SELF] 返回路径中的目录部分
string nl2br(“foo isn’t\n bar”) “foo isn’t<br> bar” 把换行转成<br>
string chr ( int ascii ) chr(97) —> a
int ord(‘a’) 97
mixed str_word_count ( string string [, int format [, string charlist]] )
string str_shuffle (‘abc’) 打乱字符串顺序
string strrev($str) * 翻转一个字符串
string strtolower($str) * 将字符串 $str 的字符全部转换为小写的
string strtoupper($str) * 将字符串 $str 的字符全部转换为大写的
string ucfirst ($str) * 将字符串 $str 的第一个单词的首字母变为大写。
string ucwords($str) * 将字符串 $str 的每个单词的首字母变为大写。
string addslashes(“I’m”) I\’m 使用反斜线引用字符串 这些字符是单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)
get_magic_quotes_gpc()
string stripcslashes(“I\’m”) I’m 将用addslashes()函数处理后的字符串返回原样
strip_tags(“<p>tt</p>”, ‘<p>’) 去除html、xml、php标记,第二个参数用来保留标记
string urlencode(string str)
string urldecode(string str)
string htmlspecialchars(“<a href=’test’>Test</a>”, ENT_QUOTES) 转换特殊字符为HTML字符编码
<a href='test'>Test</a>
ENT_COMPAT –对双引号进行编码,不对单引号进行编码
ENT_QUOTES –对单引号和双引号进行编码
ENT_NOQUOTES –不对单引号或双引号进行编码
string htmlentities(‘<p>ff</p>’, ENT_QUOTES) 转换特殊字符为HTML字符编码,中文会转成乱码
数组处理
int count( mixed var [, int mode] ) 别名:sizeof() 取数组长度
string implode(“.”, $array) 别名:join 把数组值数据按指定字符连接起来
array explode(“.”, “fff.ff.f”) 按指定字符切割
array range(0, 6, 2) 返回数组 array(0,2,4,6) 第一个参数为起使数,第二个参数为结束数,第三个参数为数据增加步长
void unset ( mixed var [, mixed var [, …]] )
array array_pad ($a, 5, ‘s’)用’s’将数组填补到指定长度
bool shuffle ( array $array ) 将数组打乱
mixed array_rand ( array input [, int num_req] )从数组中随机取出一个或多个单元的索引或键名
array array_count_values ( array input )统计数组中所有的值出现的次数
array array_combine ( array keys, array values ) 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
bool array_key_exists ( mixed key, array search )检查给定的键名或索引是否存在于数组中
mixed array_search ( mixed needle, array haystack [, bool strict] )在数组中搜索给定的值,如果成功则返回相应的键名
bool is_array ( mixed var )
bool in_array ( mixed needle, array haystack [, bool strict] )检查数组中是否存在某个值
number array_sum ( array array )计算数组中所有值的和
array array_unique ( array array )移除数组中重复的值
mixed array_shift ( array &array )将数组开头的单元移出数组
int array_unshift ( array &array, mixed var [, mixed …] )在数组开头插入一个或多个单元
int array_push($a, “3”, 1) 把’3’、’1’压入$a,将一个或多个单元压入数组的末尾(入栈),第二个参数开始就是压入的数据
mixed array_pop ( array &array )将数组最后一个单元弹出(出栈)
mixed reset ( array &array )将数组的内部指针指向第一个单元
mixed current ( array &array ) 返回数组中的当前单元 值
mixed next ( array &array )
mixed prev ( array &array )
mixed end ( array &array ) 返回数组中的最后一个单元 值
mixed key ( array &array ) 返回数组中的当前个单元 键
array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回数组中所有的键名
array array_values ( array input ) 返回数组中所有的值
array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把数组中的一部分去掉并用其它值取代
array array_merge ( array array1 [, array array2 [, array …]] )合并一个或多个数组
array array_flip ( array trans )交换数组中的键和值
int extract( array var_array [, int extract_type [, string prefix]] ) 从数组中将变量导入到当前的符号表
array compact ( mixed varname [, mixed …] ) 建立一个数组,包括变量名和它们的值
bool sort ( array &array [, int sort_flags] )从最低到最高重新安排
bool natsort($a) 用“自然排序”算法对数组排序
bool rsort ( array &array [, int sort_flags] )对数组进行逆向排序(最高到最低)
bool asort ( array &array [, int sort_flags] )对数组进行排序并保持索引关系
bool arsort ( array &array [, int sort_flags] ) 对数组进行逆向排序并保持索引关系
bool ksort ( array &array [, int sort_flags] )对数组按照键名排序
bool krsort ( array &array [, int sort_flags] )对数组按照键名逆向排序
usort(array array, callback cmp_function) 使用用户自定义的比较函数对数组中的值进行排序
回调函数返回值作用:
0 不做操作
-1 将$a所在单元先前移动
1 位置不发生变化
如果usort($a ,”cmp”); 中的$a数组只有2个值的情况下,很简单,cmp()第一个参数为$a[1],cmp()第二个参数为$a[0]; 通过cmp比较,返回1则$b>$a , $a[0],$a[1]按原序列排; 返回-1 则反之,$a[0], $a[1]互换位置;返回 0则表示两个数字大小一样,如果是文字的按照第一个字母的ASCII值比较.
如果usort($a ,”cmp”); 中的$a数组超过2个值的情况, 则需要通过递归完成排序
array array_filter ( array input [, callback callback] ) 用回调函数过滤数组中的单元
bool array_walk ( array &array, callback funcname [, mixed userdata] ) 对数组中的每个成员应用用户函数
array array_map ( callback callback, array arr1 [, array …] )将回调函数作用到给定数组的单元上
array array_fill ( int start_index, int num, mixed value ) 用给定的值填充数组
array_fill(5, 3, ‘a’)–>array(5=>’a’,6=>’a’,7=>’a’)
array array_chunk ( array input, int size [, bool preserve_keys] )将一个数组分割成多个