欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组与字符串的相互转换及相关数组函数的运用—2018年08月24日22时00分

程序员文章站 2022-03-11 13:42:10
...

今天是第十一天上课,朱老师讲解了数组的深入操作,从数组与字符串的相互转换到数组的一些重要的元素操作函数进行讲解,还有很巧妙的将数组与回调函数进行结合实现数组过滤的方法,又让我学到了很多。

  1. 数组与字符串,变量之间的转换

    代码:

    实例

    <?php
    header('Content-type:text/html;charset=utf-8');
    /**
     * 数组与变量与字符串之间的转换
     */
    //list() 把数组中的元素转化为变量,list()不是一个函数
    list($name, $sex, $age) = ['zmx', '男', 20];
    echo $name;
    echo $name, '的性别是', $sex, ';年龄是',$age,'<hr>';
    
    
    //extract($arr, $flag)关联数组转变量
    $array = ['name' => 'zmx', 'sex' => '男', 'age' => 20];
    extract($array,true);
    echo $name;
    
    
    //compact()将变量转为数组
    $name = 'zmx';
    $sex = '男';
    $age = 20;
    compact('name','sex','age');
    echo var_export($array,true);
    
    //explode()将字符串转换为数组
    $lang = 'html,css,javascript,jquery,php,mysql';
    explode(',',$lang);//按逗号来切割字符串转换为数组
    echo var_export(explode(',',$lang,3)),'<br>';//切割前三个元素,最后得[ 'html','css','javascript,jquery,php,mysql']
    echo var_export(explode(',',$lang,-2)),'<br>';//删除两个,从尾部进行删除
    
    implode(';', $array);//将数组拼接成字符串,中间插入;号
    echo var_export($array,true);

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  2. 数组元素的回调处理

    代码:

    实例

    <?php
    header('Content-type:text/html;charset=utf-8');
    /**
     * 数组的回调处理
     */
    
    //函数参数类型可以是:数值,字符串,数组
    //还可以是函数,将函数作为参数进行传递就是一个回调
    //callable()
    
    //1. array_filter($array, $callable()):回调处理数组中的每个元素的值,仅返回结果为true的元素
    $array = [0,1,null,'',false,'php'];
    echo '<pre>';
    echo '原始数组',var_export($array,true),',共有:',count($array),'个元素<hr>';
    // ''空字符串,0,null,false都会返回false
    $array2 = array_filter($array);//将过滤的函数赋给新函数
    echo '新数组',var_export($array2,true),',共有:',count($array2),'个元素<hr>';
    //非常适合删除数组中的空元素
    
    //传入一个回调: 匿名函数
    //$array3 = function hello(){
    //    return 'abc';
    //};//一次性函数
    
    $array4 = ['html','css','javascript'];
    $array5 =array_filter($array4, function ($value){
        return $value !== 'css';
    });//删除css元素,这也可以。。。
    echo var_export($array5),'<hr>';
    
    
    //2. array_walk():对数组中每个元素的键和值进行处理,array_filter()是仅对值进行处理
    $array = ['name'=>'admin','email'=>'admin@php.cn'];
    //格式化输出
    array_walk($array, function (&$value, $key) {
        echo $key,'=>',$value,'<br>';
    });//应该是循环数组,同时对键值进行处理
    //echo '<hr>';
    
    // 回调的第三个参数的用法
    //可以对相关功能进行自定义
    array_walk($array2, function (&$value, $key, $name) {
        //如果当前的用户名是:admin,则授权查看,否则拒绝
        if ($value != $name) {
            exit('无权查看');//exit退出
        } else {
            exit($key.':'.$value);
        }
    
    },'admin');

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  3. 用for()循环来遍历关联数组

    代码:

    实例

    <?php
    //array_unique();//去掉数组中重复数据
    echo var_export(array_unique([1,2,2,3,3,4,4,5,6]));
    
    //array_fill()填充
    echo var_export(array_fill(0,10,2));//创建数组从0开始用2填充10个进行初始化
    
    //array_rand(1,10,4)//随机返回数据,从1到10随机挑选4个数组成数组
    echo var_export(array_rand(range(1,33),7));
    echo var_export(array_rand(range(1,16),3));
    
    
    
    $array = ['东邪','西毒','南帝','北丐'];
    
    shuffle($array);//随机打乱数组元素,适用于验证码
    // echo var_export($arr);
    
    //array_merge():合并多个数组,相同键名互相覆盖
    $db_sys = ['host'=>'127.0.0.1','user'=>'root','pass'=>'root'];
    $db_user = ['host'=>'localhost', 'pass'=>sha1('123456')];
    
    $res=array_merge($db_sys, $db_user);//后面的覆盖前面的元素
    echo var_export($res);

    运行实例 »

    点击 "运行实例" 按钮查看在线实例


    课堂总结:这次朱老师主要是讲了大量的数组操作函数,其中最令我印象深刻的就是array_filter() 与array_walk()函数与回调函数进行结合的使用,让我数组数据的过滤多了几种操作的方式,其余的数组函数还是需要自己去查阅手册进行一个详细的研究。