zoukankan      html  css  js  c++  java
  • 4月25 正则表达式及数组

    正则表达式:
    斜杠代表定界符 /^$/ ^表示以其开始,$以其结束 d匹配一个数字字符,等价于 [0-9]。
    <?php
    $str="abcde123fg456h";
    $reg="/d/"; //任意数字0-9
    echo preg_replace($reg,"#",$str); //将字符串str按照正则表达式reg替换为#

    $str="abc2cd4e7h8kl"; //数字正能是一个不可以abc12cd4e7h8kl
    $reg="/d/";
    var_dump(preg_split($reg,$str)); //将字符串str按照正则表达式拆分

    $str="abc2cd4e7h8kl";
    $reg="/d/";
    $arr=array();
    preg_match($reg,$str,$arr); //匹配字符串中满足正则表达式的第一个数据,以数组形式输出
    var_dump($arr);
    preg_match_all($reg,$str,$arr); //匹配字符串中满足正则表达式的全部数据,以数组形式输出
    var_dump($arr);

    $str = "好厉害18653378660了hi请勿嫁得好15165339515安徽dah矮冬瓜 拍行业大概啊好广东也欺
    负偶怕哈";
    $reg = "/(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}/";
    //手机号的正则表达式
    $arr=array();
    preg_match_all($reg,$str,$arr);
    var_dump($arr);

    ?>

    数组,是很重要的因为有些东西也没有规则需要好好地记住的,
    <?php

    //定义
    //定义数组的方式1
    $arr=array(1,2,3,4,5);
    //第二种:赋值定义
    $arr1[0]=5;
    $arr1[1]=8;
    $arr1[2]=6;
    var_dump($arr1);

    //数组的分类
    //1.索引数组
    $arr=array(1,2,3,4,5); //定义数组往里面写数字,索引自动生成
    echo $arr[3];

    //2.关联数组
    $arr=array("one"=>5,"two"=>7); //元素的key是前面的,value是后面的
    echo $arr["two"];
    $a=array("code"=>0,"name"=>00,"sex"=>"男"); //关联数组应用比如像之前数据库的大数据查找
    echo $a["sex"];

    //php数组的特点:可以存储任意类型的数据,长度是可以变化的,呦关联数组
    //php数组的特点:#c相同数据类型的才可以,而现在可以存储任意类型的数据,c#中数组一旦定义
    长度既不可以变化,而现在长度可以变化,其他不能定义关联,现在可以


    //for的遍历
    //$arr=array("aa","bb","cc",10);
    //$arr=array("a"=>10,"b"=>9,"c"=>7); //for时不能遍历关联数组,索引数组是可以的
    for($i=0;$i<count($arr);$i++)
    {
    echo $arr[$i]."<br>";
    }

    //foreach 遍历
    //$arr=array("aa","bb",5,"cc",10);
    $arr=array("one"=>10,"two"=>20,"three"=>30);
    foreach($arr as $value) //把值交给value
    {
    echo $value."<br>"; //可以遍历关联数组,索引数组
    }

    //比如会进向下面一样例题
    //$arr=array("a"=>10,"b"=>20,"c"=>30,"d"=>40);
    //$arr=array("a","b","c");
    foreach($arr as $value)
    {
    echo $value."<br>"; //上部分同上面
    }
    foreach($arr as $key=>$value)
    {
    echo $key."--".$value."<br>"; //可以同时取key和value值,关联和索引的都可以
    }

    //3.each()函数
    $arr=array("a"=>10,"b"=>20,"c"=>30);
    var_dump(each($arr)); //返回数组里面元素的key和value
    var_dump(each($arr)); //每次取完值向下走一个指向下一个 ,第几次执行指向第几个

    //自己尝试下发现索引数组也是可以的

    //4.list()函数
    //向一般的函数都是写在=的右边的,而list是在=的左边的
    $arr=array("a","b","c",7,"d",5); //$arr=array("a"=>10,"b"=>20,"c"=>30,"d"=>45);
    关联数组是不可以的
    list($a,$b,$c,$d)=$arr; //可以少写,不可以多写,将数组里面的值分配给list函
    数里的变量
    echo $c;

    //5.each()和list()结合起来遍历数组
    //$arr=array("aa","bb",5,"cc","10");
    //$arr=array("a"=>10,"b"=>20,"c"=>30,"d"=>45); //索引和关联都可以实现
    while(list($key,$value)=each($arr))
    {
    echo "{$key}--{$value}<br>";
    }

    //6.指针遍历
    $arr=array("aa","bb",5,"cc","10"); //也可以用关联
    //var_dump(current($arr)); //取当前指针指向位置的value值
    //echo key($arr); //取当前指针指向位置的key值
    //next($arr); //指针向下调
    //prev($arr); //指针向上调
    //var_dump(end($arr)); //将指针调向最后一个
    //reset($arr);//将指针重置,指向第一个
    /*next($arr);
    var_dump(current($arr)); //指针向下调
    next($arr);
    var_dump(current($arr));
    */

    //例题
    $arr=array("aa","bb",5,"cc","10");
    while(next($arr))
    {
    echo key($arr)."--".current($arr)."<br>"; //这个是从索引为1处开始的不行
    }
    输出后的结果是
    1--bb
    2--5
    3--cc
    4--10

    $arr=array("aa","bb",5,"cc","10");
    do
    {
    echo key($arr)."--".current($arr)."<br>";
    }
    while(next($arr))

    输出后的结果是
    0--aa
    1--bb
    2--5
    3--cc
    4--10

    ?>

    常用的函数
    <?php
    //$arr=array("a"=>10,"b"=>20,"c"=>30,"d"=>45);
    //$arr=array("aa","bb",5,"cc",5,"10");
    //var_dump(in_array("ab",$arr)); //判断数组里面是否存在某个值,返回bool型
    //var_dump(array_reverse($arr)); //翻转数组,产生新的数组
    //echo count($arr); //返回数组的个数 特别常用

    $attr=array_unique($arr); //去重,在后面的时候好用在前面回事索引号缺失
    var_dump($attr);


    unset($arr[3]); //删除数组中的元素
    var_dump(array_values($arr)); //删除数组中的元素并将其重新索引


    $attr=array_unique($arr); //去重之后的重新索引
    var_dump(array_values($attr));


    $attr=array(1,2,3,4);
    var_dump(array_merge($attr,$arr)); //没有先后顺序,合并数组


    array_push($arr,"dd"); //给数组追加一个元素
    var_dump($arr);

    ?>

    二维数组
    <?php
    //定义
    $attr=array(
    array(1,2,3,4),
    array(4,5,6),
    array(5,6,7),
    array(7,8,9),
    );
    var_dump($attr);

    //例题
    $attr=array(
    array('n001','汉族'),
    array('n002','苗族'),
    array('n003','回族'),
    array('n004','维吾尔族'),
    );
    //将数组以下拉列表的形式表现
    echo "<select>";
    foreach($attr as $value)
    {
    echo "<option value='{$value[0]}'>{$value[1]}</option>";
    }
    echo "</select>";

    //以div的形式输出
    foreach($attr as $value)
    {
    echo "<div class='{$value[0]}'>{$value[1]}</div>";
    }

    $attr=array(
    array('p001','张三','男','汉族'),
    array('p002','李四','女','苗族'),
    array('p003','王五','男','回族'),
    array('p004','赵六','女','维吾尔族'),
    );
    //用表格的方式输出
    echo "<table width='100%' border='1' cellpadding='0' cellspacing='0'>";
    echo "<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td></tr>";
    foreach($attr as $value)
    {
    echo "<tr><td>{$value[0]}</td><td>{$value[1]}</td><td>{$value[2]}</td><td>{$value[3]}
    </td></tr>";
    }

    echo "</table>"
    ?>
    另一种的方式是需要php方式输出是才出现的

    <?php
    $attr=array(
    array('p001','张三','男','汉族'),
    array('p002','李四','女','苗族'),
    array('p003','王五','男','回族'),
    array('p004','赵六','女','维吾尔族'),
    );
    ?>

    <table width="100%" border="1" cellpadding="0" cellspacing="0">
    <tr><td>代码</td><td>姓名</td><td>性别</td><td>民族</td></tr>
    <?php
    /*foreach($attr as $value)
    {
    echo "<tr><td>{$value[0]}</td><td>{$value[1]}</td><td>{$value[2]}</td><td>
    {$value[3]}</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>";
    }

    ?>
    </table>

  • 相关阅读:
    Navicat Premium12以上版本多用户破解方法
    Linux并行gzip压缩工具pigz
    Windows Server 2019远程桌面服务配置和授权激活
    mysql删除大表
    KVM qcow2 磁盘在线扩容方法
    在jenkins中连接kubernetes集群
    CentOS 7部署 Ceph分布式存储架构
    (转)关于T(n) = kT(n/c) + f(n) 的时间复杂度
    算法中的思想(第0篇)
    (求通俗易懂的证法) 过n个有标志顶点的树的数目等于n^(n-2)
  • 原文地址:https://www.cnblogs.com/Duriyya/p/5432542.html
Copyright © 2011-2022 走看看