一、正则表达式

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. poj 1390 Blocks (经典区间dp 方块消除)

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4250   Accepted: 1704 Descriptio ...

  2. TCP/IP详解 卷一(第十四章 DNS:域名系统)

    域名系统(DNS Domain Name System)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息. 从应用角度上看,对DNS的访问时通过 ...

  3. 64位windows2003 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序

    64位windows2003系统 使用 mdb数据库时候出现如下错误. 可能用office的一些比较旧的程序时候会这样. 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序 ...

  4. Java自动内存管理机制

    1.运行时数据区域划分 2.程序计数器 作用:可以看做是当前线程所执行的字节码的行号指示器. 解释:字节码指示器就是通过改变程序计数器的值来指定下一条需要执行的指令.分支,循环等 基础功能就是依赖程序 ...

  5. KingdeeK3-修改单据邮件发送的自定义字段

    只需要执行类似下面语句即可: update ICTemplateentry set FVisForBillType = 63,flookupcls=6 where fid ='P01' and fhe ...

  6. 关于Java性能的9个谬论

    http://www.infoq.com/cn/articles/9_Fallacies_Java_Performance Java的性能有某种黑魔法之称.部分原因在于Java平台非常复杂,很多情况下 ...

  7. NSMutableAttributedString 的使用方法,设置格式

    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:title]; NS ...

  8. 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联

    第九节: 利用RemoteScheduler实现Sheduler的远程控制   一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...

  9. Hive优化策略

    hive优化目标 在有限的资源下,运行效率高. 常见问题 数据倾斜.Map数设置.Reduce数设置等 hive运行 查看运行计划 explain [extended] hql 例子 explain ...

  10. ros之串口通信---imu

    1.sudo apt-get install ros-kinetic-rosserial 或者sudo git clonegit://github.com/wjwwood/serial.git  (开 ...