php正则表达式和数组
一、正则表达式
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>

php正则表达式和数组的更多相关文章
- php正则表达式、数组
		
<?php $s = "he8llo5wor6ld"; $s = preg_replace("/\d/","#",$s);按照正则表达 ...
 - PHP正则表达式;数组:for()遍历、 foreach ()遍历、each()list()组合遍历;指针遍历
		
正则表达式: 1.定界符号 任何字符,一般用 // 2. 模式修正符i 写在定界符外面后面,可不区分大小写 3.preg_replace($reg,&q ...
 - php正则表达式and数组
		
<?php //正则表达式 //斜杠代表定界符 /^$/ /* $str="abcde123fg456h"; $reg="/\d/"; echo preg ...
 - 使用正则表达式和数组形式获取get方法传入的值
		
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
 - PHP数组——数组正则表达式、数组、预定义数组
		
正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...
 - PHP数组(数组正则表达式、数组、预定义数组)
		
正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...
 - 4.PHP正则表达式与数组
		
PHP正则表达式相关 行定位符 开头 ^tm 结尾 tm$ 不限制 tm 单词定界符 \btm\b 单词tm,如果想取反的话就是大写的 \Btm\B 或的关系,[Tt][Mm] 可以表达 tm T ...
 - Oracle存储过程例子:运用了正则表达式、数组等
		
代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...
 - C语言正则表达式详解 regcomp() regexec() regfree()详解
		
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库 ...
 
随机推荐
- linux ln 命令使用参数详解(ln -s 软链接)(转)
			
这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件. 当 我们需要在不同的 ...
 - 【Python数据分析】
			
索引对象的其他功能 ①更换索引 ②对齐 ③删除 一.更换索引 我们已经知道,数据结构一旦声明,index对象就不能改变 事实上,我们重新定义索引之后,我们就能够用现有的数据结构生成一个新的数据机构 p ...
 - LoadRunner变量到参数的互换
			
作者QQ:764714258,转载请说明出处,阅读此文需要良好的C基础 LoadRunner中,web性能测试使用的脚步是C语言编写的.C语言中有变量的概念,LoadRunner工具中带有参数这个概念 ...
 - python 存取xml方法
			
或者也可以参考http://www.cnblogs.com/xiaowuyi/archive/2012/10/17/2727912.html中内容 目前而言,Python 3.2存取XML有以下四种方 ...
 - docker与虚拟化的联系与区别
			
虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用 ...
 - The best way to predict the future is to invent it,预测未来最好的方法是创造它!
			
The best way to predict the future is to invent it,预测未来最好的方法是创造它! ——Smalltalk发明人Alan Kay “预测未来的最好方法, ...
 - openWRT自学---对官方的开发指导文档的解读和理解 记录2:如何控制内核模块的编译
			
openwrt对于kernel module的处理分两类:随内核主线而来的kernel module 和 其他作为独立project的kernel module.而这两种,openwrt将采用相同的模 ...
 - 从零开始学android -- notification通知
			
目前有三种通知 第一种是普通通知 看看效果 布局什么的太简单了我就不放在上面了给你们看核心的代码就行了 里面的 int notificationID = 1; //设置点击通知后的意图 Inten ...
 - RecyclerView 踩坑
			
一.RecyclerView设置拖动后怎么监听拖动的开始和结束 ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Cal ...
 - Android插件化(使用Small框架)
			
github: https://github.com/cayden/MySmall Android插件化(使用Small框架) 框架源代码 1. Create Project File->New ...