一、正则表达式
1. “/”代表定界符,"^"代表起始符号,"$"代表结束符号 $str1="abc123def45ghjk6789lou"; $str2="abcde5fg2h6jkl"; $reg="/\d/"; //匹配一个数字 2. echo preg_replace($reg,"#",$str1); //将字符串str1按照正则表达式reg替换为# 输出:abc###def##ghjk####lou 3. var_dump(preg_split($reg,$str2)); //将字符串str2按照正则表达式reg拆分,返回一个数组 输出: array(4) { [0]=> string(5) "abcde" [1]=> string(2) "fg" [2]=> string(1) "h" [3]=> string(3) "jkl" } 4. $str=" 接我去哦爱丽丝18953364666疯狂群卡里的书法13853369999家穷奇啊"; $reg="/(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|170[0|5|7|8|9]|17[6|7|8]|18[0-9])\d{8}/"; //手机号正则表达式 $arr=array(); preg_match($reg,$str,$arr); //匹配字符串中满足正则表达式的第一个数据 var_dump($arr); preg_match_all($reg,$str,$arr); //匹配字符串中满足正则表达式的所有数据 var_dump($arr);
二、数组
1.定义数组:
方式一: 标准array定义
$arr=array(1,2,3,4,5);
方式二: 赋值定义:
$arr[0]=5;
$arr[1]=6;
var_dump($arr);
2.分类:
2.1 索引数组: 数组内只写value值,索引自动生成,根据索引数字取值
$arr=array(1,2,3,4,5);
echo $arr[0];
2.2 关联数组: key => value,key与value一一对应,成对存在
$arr=("one"=>5,"two"=>10);
echo $arr["two"];
注意: 关联数组关系更加清晰,key与value必须写全
php数组特点: 可以存储任意类型数据,长度可以变化,特有关联数组
3.遍历数组
3.1 for循环遍历: 不能遍历关联数组
$arr=array("aa","bb","cc",5,"d",10);
$arr=array("a"=>10,"b"=>5,"c"=>"hello","d"=>20);
for($i=0;$i<count($arr);$i++) { echo $arr[$i]."<br>"; }
3.2 foreach遍历: 可以遍历关联数组
只取value值:
foreach($arr as $value) { echo $value."<br>"; }
取key与value:
foreach($arr as $key=>$value) { echo $key."--".$value."<br>"; }
3.3 each()函数
var_dump(each($arr)); //返回数组里面元素的key和value
var_dump(each($arr)); //每次取完值向下走一个,指向下一个值
相当于指针,第一次取值,指针指向第一个元素,第二次取,指针指向第二个元素
3.4 list()函数 比较特殊,出现在等号左边
list($a,$b,$c,$d,$e) = $arr; //将数组里面的值分配给list函数里的变量,变量可以少写 echo $d;
each()和list()结合起来遍历数组 : 可以遍历关联数组
while(list($key,$value)=each($arr)) { echo "{$key}--{$value}<br>"; }
3.5 指针遍历 : 可以遍历关联数组
var_dump(current($arr)); //取当前指针指向位置的value值 echo key($arr); //取当前指针指向位置的key next($arr); //将指针向下调 echo $key($arr); prev($arr); //将指针往上调 end($arr); //将指针调向最后一个 reset($arr); //将指针重置,指向第一个 do{ echo key($arr)."--".current($arr)."<br>"; } while(next($arr)) //而 while(next($arr)) do{ echo key($arr)."--".current($arr)."<br>"; } //先执行next(),取不到第一个元素
4.预定义数组
global //声明为全局变量 $GLOBALS //引用全局作用域中可用的全局变量 var_dump($_SERVER); //服务器和执行环境信息 var_dump($_ENV); //环境变量 var_dump($_GET); //HTTP GET变量 存储页面传过来的值,可在地址栏中显示 var_dump($_POST); //HTTP POST变量 存储页面传过来的值 $_REQUEST //HTTP REQUEST变量 $_FILES //HTTP FILES变量 $_SESSION //SESSION变量 $_COOKIE //HTTP Cookies
5.数组常用函数
$arr=array("aa","bb","cc",5,"d",10);
$arr=array("a"=>10,"b"=>5,"c"=>"hello","d"=>20);
var_dump(in_array("aa",$arr)); //判断数组中是否存在某个值,若存在则返回true,否则返回false 可判断关联数组中的value值, 而不能判断key var_dump(array_reverse($arr)); //翻转数组 echo count($arr); //返回数组元素的个数 $attr=array_unique($arr); //去重,返回一个新数组, 若为索引数组,则重复元素的索引也去掉了 unset($arr[0]);||unset($arr["a"]); //删除数组中的元素,根据索引或key var_dump(array_values($attr)); //重新索引, 关联数组中的key也变为索引 $attr=(1,2,3,4); var_dump(array_merge($arr,$attr)); //合并数组,重新索引,关联数组的key不变 array_push($arr,"dd"); //给数组追加一个元素 成为数组的最后一个元素
6.二维数组
$attr=array(
array(1,2,3),
array(4,5,6),
array(7,8,9)
);
var_dump($attr);
例1:
$attr=array(
array("n001","汉族"),
array("n002","苗族"),
array("n003","回族"),
array("n004","维吾尔族")
);
1.1 将二维数组中的内容以下拉列表的形式显示:
echo "<select>"; foreach($attr as $value) { echo "<option value='{$value[0]}'>{$value[1]}</option>"; } echo "</select>";
1.2 将二维数组中的内容以div的形式显示:
<style> .minzu{ width=100px; background-color:red; color:white; border:1px solid;} </style>
<?php foreach($attr as $v) { echo "<div class='minzu'>{$v[0]},{$v[1]}</div>"; } ?>
例2:
$attr = array(
array('p001','张三','男','汉族'),
array('p002','李四','女','回族'),
array('p003','王五','男','汉族'),
array('p004','赵六','女','苗族')
);
2.1 将二维数组的内容以表格形式显示
echo "<table width='300' border='1' cellpadding='0' cellspacing='0'>"; echo "<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td></tr>"; for($i=0;$i<count($attr);$i++) { echo "<tr><td>{$attr[$i][0]}</td><td>{$attr[$i][1]}</td><td>{$attr[$i][2]}</td><td>{$attr[$i][3]}</td></tr>"; } echo "</table>";
2.2 或者在表格中引用php代码:
<table width='300' border='1' cellpadding='0' cellspacing='0'> <tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td></tr> <?php 用for循环遍历数组
/*for($i=0;$i<count($attr);$i++) { echo "<tr> <td>{$attr[$i][0]}</td> <td>{$attr[$i][1]}</td> <td>{$attr[$i][2]}</td> <td>{$attr[$i][3]}</td> </tr>"; }*/
用foreach更简便一些: foreach($attr as $v) { echo "<tr> <td>{$v[0]}</td> <td>{$v[1]}</td> <td>{$v[2]}</td> <td>{$v[3]}</td> </tr>"; } ?> </table>