数组函数
数组的键、值操作函数
//系统定义的数组函数:
array_values();//获取数组中的值;
array_keys();//获取数组中的键
in_array();//检查一个值是否在数组中
array_key_exists();//检查一个键是否在数组中
array_flip();//键、值对调
array_reverse();//数组中的值反转
//获取一个数组中的key或者value
<?php
$arr=array('name'=>'user','age'=>'18','sex'=>'nan');
foreach($arr as $key=>$value){
$arr2[]=$key;//$arr2[]=$value;
}
echo "<pre>";
print_r($arr2);//输出获取的key或value
echo "</pre>";
?>
统计数组的元素和唯一性
//系统定义的数组函数
count();//统计数组的个数
array_count_values();//统计数组中值出现的次数
array_unique();//删除数组中重复值
//利用数组元素的唯一性随机输出一个value
<?php
$arr=array('name'=>'user','agge'=>20,'sex'=>'man');
function kai($arr){//构造函数
foreach($arr as $val){
$arr2[]=$val;//获取$arr的value
$li++;//每输入到$arr2中一个value,使变量$li加一
}
$hai=mt_rand(0,$li-1);//mt_rand为系统的一个函数,具有随机选数的功能,(0,10)为选数的范围。
return $arr2[$hai];//使$li充当数组$arr2的key,实现随机选数
}
echo kai($arr);
?>
使用回调函数处理数组的函数
//系统定义的数组函数
array_filter();数组值过滤
array_map();将函数作用到给定函数的单元上
数组的排序函数
//系统定义的数组函数
//都会改变原数组的值
sort();//按值把数组进行排序,升序,不保留key.
rsort();//按值把数组进行排序,降序,不保留key.
asort();//按值把数组进行排序,升序,保留key.
arsort();//按值把数组进行排序,降序,保留key.
ksort();//按键把数组进行排序,升序,保留key.
krsort();//按键把数组进行排序,降序,保留key.
natsort();//按自然数排序
natcasesort();//忽略大小写的自然数排序
array_multisort();//用一个数组对另外一个数组进行排序
<?php
$arr=array(100,2,3,4,5,6,3);
function paixu($arr){
for($i=0;$i<count($arr)-1;$i++)
{
if($arr[$i]>$arr[$i+1])
{
$a=$arr[$i];
$arr[$i]=$arr[$i+1];
$arr[$i+1]=$a;
}
}
echo "<pre>";
print_r($arr);
echo "</pre>";
}
echo paixu($arr);
?>//利用冒泡函数对数组进行排序,可以进行最小与最大值的输出
拆分、合并、分解与结合函数
array_slice();//截取一段值括号里面填写需要截取value的key的范围
array_splice();//截取一段值,保留一段值,括号里面填写需要截取value的key的范围
array_combine();//合并,一个是key。一个是value{两个数组需要项数相同}
array_merge();//合并,键值相同,后面覆盖前面
implode();//把数组连接成字符串 与join();链接一样
explode();//把字符串分解成数组
数组与数据结构
array_pop();//从最后弹出一个值,返回弹出值,会改变运数组
array_push();//从最后压入一个值,返回数组个数,会改变运数组
array_shift();//从最前面弹出一个值,返回移出值,原数组下标重排
array_unshift();//从前面插入一个值,返回数组个数,原数组下标重排
其他有用的数组处理函数
array_rand();//随机取一个key
shuffle();//打乱数组{与array_slice();联用可以进行具有人数限定的抽取}
array_sum();//数组所有值的和
array_product();//数组所有值的乘积
range();//获取一个范围内数组
unset(); 进行删除
在处理函数问题时一般不更改初始数组而是创建新的数组来解决问题
字符串的处理介绍
字符串的定义:
$asr=‘hello world’;
常用的字符串输出函数
输出字符串:
<?php
$str='hello world';
echo '<h2>'.$str.'</h2>';//字符串连接符是.
echo "<h2>{$str}</h2>";
print "<h2>{$str}</h2>";
printf ('<h2>%s</h2>',$str);
echo sprintf('<h2>%s</h2>',$str);
?>
常用的字符串格式化函数
去除空格和字符串填补函数
ltrim($a);//去除左边空格
rtrim($a);//去除右边空格
trim($a);//去除左右边空格
str_pad($a,10);//补充空格或者其他‘自己定义’默认在右边补
str_pad($a,10,'-',SRE_PAD_LEFT);//在左边补充
str_pad($a,10,'-',SRE_PAD_BOTH);//左右都补
str_repeat('a',20);//重复二十次a
字符串大小写转换函数
strtolower($a);//转换为小写字符
strtoupper($a);//转换为大写字符
ucfirst($a);//首字母大写
ucwords($a);//每一个单词首字母大写
与html标签相关联的字符串函数
nl2br(); <?php
$str="abc\nads\nsadasd\nasda";
echo nl2br($str);//把换行符替换成br标签
?>
htmlspecialchars();
<?php
$str="<h1>abcads</h1>";
echo htmlspecialchars($str);//将html标签转为实体输出
?>
strip_tags();
<?php
$str="<h1>abcads</h1><h1>sadasdasda</h1>";
echo strip_tags($str);//去除html标签
?>
addslashes(); //当网页输入数据库数据时,可能会导致sql语句错误,使用此语句让输入内容时将完整输入。(单双引号)
stripslashes();//在避免使用sql语句恶意入侵,防止将传输内容转实体然后进行上传。
htmlspecialchars_decode()//在数据库传出数据时将数据实体转化
其他字符串格式化函数
strrev(); <?php
$str="123456";
echo strrev($str);//将数据倒写
?>
strlen(); <?php
echo strlen("Shanghai");//函数返回字符串 "Shanghai" 的长度:
?>
number_format(); <?php
$str="1234561256";
echo number_format($str);//将数据以金钱格式输出
?>
md5();//将数据进行md5加密
str_shuffle();//将数据进行乱序
substr($a,0,4);//从第0个开始截取到第4个数据
strrpos($a,'b');//字符串中查找字符b
str_replace('a','b',$m);//将$m中的a替换为b
basename();
//一个相当于parse_url()的函数
<?php
function get(){
$query=$_SERVER['QUERY_STRING'];//将全局常量以一个数组表达
$arr2=explode('&',$query);
foreach($arr2 as $val){
$arr3=explode('=',$val);
$arr4[$arr3[0]]=$arr3[1];
}
return $arr4;
}
echo "<pre>";
print_r(get());//打印出
echo"<pre>"
?>
<?php
$str='我你他我你他我你他';
echo mb_substr($str,0,4)."...</a>";//对字符串进行截取
?>
路径处理函数
dirname(); <?php
$str="D:\net\wampserver\www\index.php";
echo basename($str);//截取文件index.php
echo dirname($str);//截取目录
$arr=pathinfo($str);//解析文件目录等
echo"<pre>";
print_r($arr);//打印出文件目录等
echo"<pre>";
?>
parse_url();//解析网址
正则表达式在字符串中的应用
//一些简单的源代码:
<?php
$a='php sda pap fgc pvp kjl sod pzp dfs php';
$ptn='/p.p/i';//点可以替换为其他任意字符。其中的i为模式修正符表示忽略大小写
echo preg_match_all($ptn,$a,$mt);//共有五次
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// a-z
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/[a-z]/';//匹配任意一个小写字母
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// A-Z
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/[A-Z]/';//匹配任意一个大写字母
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// 0-9
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/[0-9]/';//匹配任意一个数字
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// (abc)
// [0-9]
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/[0-9]/';//匹配任意一个数字
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// [^0-9]
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/[0-9]/';//匹配除了数字以外的其他字符
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// $1,\\1
// \d
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/\d/';//也表示匹配任意一个数字
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// \D
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/D/';//表示任意一个非数字
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// \w
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/\w/';//匹配对象为任意一个数字、字母、下划线
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// \W
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/\W/';//匹配对象为除了数字、字母、下划线的其它字符
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// \s
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/\s/';//匹配对象仅为空格
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// \S
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/\S/';//匹配对象为非空格
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
// |
<?php
$a='php sda 1 pap fgc 1 pvp 2 kjl sod 3 pzp dfs php';
$ptn='/php|fgc/';//竖线表示或者的意思匹配php或者fgc
echo preg_match_all($ptn,$a,$mt);
echo"<pre>";
print_r($mt);
echo"</pre>";
?>
元字符
*
$ptn='/\d*/';//匹配任意多个前面的原子
+
$ptn='/\d+/';//多个前面的原子
?
$ptn='/\d?/';//任意一个字符可以有也可以没有
|
$ptn='/php|fgc/';//竖线表示或者的意思匹配php或者fgc
\b
$ptn='/\b\d\b/';//查找字符串中具有词边界的数字
\B
$ptn='/\B\d\B/';//查找字符串中不具有词边界的数字
{3}
$ptn='/\d{3}/';//匹配出3个前面的原子
{3,7}
$ptn='/\d{3,7}/';//匹配出3到7个前面的原子
{3,}
$ptn='/\d{3,}/';//批评日三个以上前面的原子
^ //什么时候开始
$ //什么时候结束
模式修正符
i //忽略大小写
u //启动贪婪模式(最小化匹配)
m //把\n视为多行
//向后引用
<?php
$str="2014-2011-3";
$ptn='/(\d+)-(\d+)-(\d+)/';//括号将$str中的2014、2011、3分别赋值为$1、$2、$3
$rep='$1/$2+$3';//也可以'\\1'来表达'$1'
echo preg_replace($ptn,$rep,$str);
?>
能够使用正则的函数
<?php
$str="2014+2011-3/59";
$arr=preg_split('/\+|-|\//',$str);//正则分割
echo "<pre>";
print_r($arr);
echo "<pre>";
?>
preg_match();
echo preg_match_all();
//preg_match();函数使用实例
<?php
$a='php sda rgf fgc ghf kjl sod asd dfs php';
$ptn='/php/';
echo preg_match($ptn,$a,$mt);//当从字符串中匹配到第一个php的时候将会暂停不再继续匹配因此只会输出整数1
echo preg_match_all($ptn,$a,$mt);//会将字符串中所有的php全部匹配出来输出总计的数
print_r($mt);
echo"</pre>";
?>
一些正则表达式的使用场景
检查手机格式
<?php
$a='19360691606';
if(preg_match('/^\d{11}$/',$a)){//用正则表达式判断字符串是否为11位
echo '格式正确';
}else{
echo '格式错误';
}
?>
检查邮箱格式是否正确
<?php
$a='2909598545@qq.com';
if(preg_match('/^\d{6,11}@qq.\w+$/',$a)){//用正则表达式判断字符串是否为6-11位数字与@qq.结尾的
echo '格式正确';
}else{
echo '格式错误';
}
?>
检查手机是否为139开头
<?php
$a='19360691606';
if(preg_match('/^139\d{8}$/',$a)){//用正则表达式判断字符串是否139开头的11位
echo '格式正确';
}else{
echo '格式错误';
}
?>
复杂的字符串替换环境
<?php
$a='2016-06+28';
echo preg_replace('/(\d+)\-(\d+)\+(\d+)/','$1/$2=$3',$a);//将'-'与'+'分别换为'+'与'='
?>
数学、日期函数与数据处理
数学函数
max();//取最大函数
min();//取最小函数
round();//给目标四舍五入
ceil();//目标的上一个整数
floor();//目标的下一个整数
mt_rand();//随机选数
日期函数
time();//从计算机计时其秒数输出
strtotime();//将格式花的时间转换为时间戳
date();//当时间戳进行时间格式
中华人民共和国时区(东八区):rpc;
date('');格式化参数:
Y:2013年
m:01-12月
n:1-12月
d:01-31天
j:0-31天
H:24时
h:12时
i:00-59分
s:00-59秒
w:0-6周
A:AM或PM
a:am或pm
L:是否为闰年
t:某月天数
microtime();//获取微秒
PHP的错误处理(在apache->bin->php.ini进行快速处理)
1、错误报告的级别
2、调整错误报告级别
设置是否报错:display_errors = On
报错级别:
~E_ALL //所有报错
~E_NOTICE //提示报错
~E_PARSE//语法报错
~E_DEPRECATED//未来会弃用报错
~E_WORNING//警告报错
~E_ERROR//严重错误
控制报错级别:E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED