一、正则表达式

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正则表达式和数组的更多相关文章

  1. php正则表达式、数组

    <?php $s = "he8llo5wor6ld"; $s = preg_replace("/\d/","#",$s);按照正则表达 ...

  2. PHP正则表达式;数组:for()遍历、 foreach ()遍历、each()list()组合遍历;指针遍历

    正则表达式:    1.定界符号        任何字符,一般用  //    2. 模式修正符i        写在定界符外面后面,可不区分大小写    3.preg_replace($reg,&q ...

  3. php正则表达式and数组

    <?php //正则表达式 //斜杠代表定界符 /^$/ /* $str="abcde123fg456h"; $reg="/\d/"; echo preg ...

  4. 使用正则表达式和数组形式获取get方法传入的值

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. PHP数组——数组正则表达式、数组、预定义数组

    正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...

  6. PHP数组(数组正则表达式、数组、预定义数组)

    正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...

  7. 4.PHP正则表达式与数组

    PHP正则表达式相关 行定位符 开头 ^tm 结尾 tm$ 不限制 tm 单词定界符 \btm\b   单词tm,如果想取反的话就是大写的 \Btm\B 或的关系,[Tt][Mm] 可以表达 tm T ...

  8. Oracle存储过程例子:运用了正则表达式、数组等

    代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...

  9. C语言正则表达式详解 regcomp() regexec() regfree()详解

    标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库 ...

随机推荐

  1. linux ln 命令使用参数详解(ln -s 软链接)(转)

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件. 当 我们需要在不同的 ...

  2. 【Python数据分析】

    索引对象的其他功能 ①更换索引 ②对齐 ③删除 一.更换索引 我们已经知道,数据结构一旦声明,index对象就不能改变 事实上,我们重新定义索引之后,我们就能够用现有的数据结构生成一个新的数据机构 p ...

  3. LoadRunner变量到参数的互换

    作者QQ:764714258,转载请说明出处,阅读此文需要良好的C基础 LoadRunner中,web性能测试使用的脚步是C语言编写的.C语言中有变量的概念,LoadRunner工具中带有参数这个概念 ...

  4. python 存取xml方法

    或者也可以参考http://www.cnblogs.com/xiaowuyi/archive/2012/10/17/2727912.html中内容 目前而言,Python 3.2存取XML有以下四种方 ...

  5. docker与虚拟化的联系与区别

    虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用   ...

  6. 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 “预测未来的最好方法, ...

  7. openWRT自学---对官方的开发指导文档的解读和理解 记录2:如何控制内核模块的编译

    openwrt对于kernel module的处理分两类:随内核主线而来的kernel module 和 其他作为独立project的kernel module.而这两种,openwrt将采用相同的模 ...

  8. 从零开始学android -- notification通知

    目前有三种通知 第一种是普通通知 看看效果 布局什么的太简单了我就不放在上面了给你们看核心的代码就行了 里面的   int notificationID = 1; //设置点击通知后的意图 Inten ...

  9. RecyclerView 踩坑

    一.RecyclerView设置拖动后怎么监听拖动的开始和结束 ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Cal ...

  10. Android插件化(使用Small框架)

    github: https://github.com/cayden/MySmall Android插件化(使用Small框架) 框架源代码 1. Create Project File->New ...