• PHP数组深入


    1、数组创建

    索引数组:数组下标是数字

    //自动分配:
    $cars=array("Volvo","BMW","SAAB"); 
    //手动分配1:
    $cars[0]="Volvo";
    $cars[1]="BMW";
    $cars[2]="SAAB";
    //手动分配2(与1等价):
    $cars[]="Volvo";
    $cars[]="BMW";
    $cars[]="SAAB";

    关联数组:数组下标是字符串

    //自动分配:
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    //手动分配:
    $age['Peter']="35";
    $age['Ben']="37";
    $age['Joe']="43";
    echo "Peter is " . $age['Peter'] . " years old.";

    多维数组
    多维数组是数组的嵌套,即数组中又包含数组
    二维数组例子;

    <?php
    $cars = array
    (
    array("Volvo",22,18),
    array("BMW",15,13),
    array("Saab",5,2),
    array("Land Rover",17,15)
    );
    echo $cars[0][0].": 库存:".$cars[0][1].", 销量:".$cars[0][2].".<br>";
    echo $cars[1][0].": 库存:".$cars[1][1].", 销量:".$cars[1][2].".<br>";
    echo $cars[2][0].": 库存:".$cars[2][1].", 销量:".$cars[2][2].".<br>";
    echo $cars[3][0].": 库存:".$cars[3][1].", 销量:".$cars[3][2].".<br>";
    ?>


    可以在 for 循环中使用另一个 for 循环,来获得 $cars 数组中的元素(仍需使用两个索引):

    2、数组遍历

    for()循环(略)
    foreach循环
    语法:

    foreach ($array as $value) {
        code to be executed;
    }

    例子:
    索引数组:

    $colors = array("red","green","blue","yellow"); 
    foreach ($colors as $value) {
        echo "$value <br>";
    }


    关联数组:

    $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
    foreach($age as $x=>$x_value) {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "<br>";
    }

    list,each,while遍历(list看不到字符串下标的值)
    list的作用:list — 把数组中的值赋给一组变量
    list() 仅能用于数字索引的数组,并假定数字索引从 0 开始
    each — 返回数组中当前的键/值对并将数组指针向前移动一步
    返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。(看手册)

    $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
    reset($fruit);
    while (list($key, $val) = each($fruit)) {
        echo "$key => $val
    ";
    }


    使用数组的内部指针控制函数遍历数组
    key()获取当前数组指针所在键值,

    current()获取当前数组指针所在元素值,

    next()获取当前数组指针下一个元素值并将指针下移一位,

    prev()获取当前数组指针上一个元素值并将指针上移一位,

    end()获取当前数组最后一个元素值并将指针移到最后,

    reset()获取当前数组第一个一个元素值并将指针移到第一位

    3、获得数组的长度:count($arr)

    4、数组排序

    sort($arr) - 按值把数组值进行排序,升序,不保留key
    rsort($arr) - 按值把数组值进行排序,降序,不保留key
    asort($arr) - 按值把数组值进行排序,升序,保留key
    arsort($arr) - 按值把数组值进行排序,降序,保留key
    ksort($arr) - 按键把数组值进行排序,升序,保留key
    krsort($arr) - 按键把数组值进行排序,降序,保留key
    natsort();-自然排序,用于有字符串数组
    natcasesort();-忽略大小写的自然排序,用于有字符串数组
    array_multisort();-用一个数组对另外一个数组进行排序

    5、array_map();将回调函数作用到给定数组的单元上

    6、键值操作

    获取数组中的值
    array_values();返回含所有值的索引数组
    获取数组中的键
    array_keys();返回数组中部分的或所有的键名
    array array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] )
    检查一个值是否在数组中
    in_array();
    bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
    检查一个键是否在数组中
    array_key_exists();
    键和值对调
    array_flip();
    数组中的值反转
    array_reverse();
    删除数组中重复值
    array_unique();
    统计数组中值出现的次数
    array_count_values();(限于元素为字符串或整型的数组)
    自己实现

    function acv($arr){
        foreach($arr as $val){
            if(!isset($arr2[$val]))
                $arr2[$val]=0;
            $arr2[$val]++;
        }
        return $arr2;
    }        

    数组值过滤
    array_filter();
    自己实现(还没有实现回调函数):

    function af($arr){
         foreach($arr as $k=>$v)
            if(empty($v))
                unset($arr[$k]);
        return $arr;
    }

    7、拆分、合并、分解与结合函数

    array_slice($arr,$index,$length);返回截取的一段值,原数组不变
    array_splice($arr,$index,$length);返回截取的一段值,改变原数组
    array_combine($arr1,$arr2);合并,前一个是key,后一个是value
    array_merge(); 并集;合并,键值相同,后面覆盖前面
    implode();/join() 把数组连接成字符串
    $str=implode($arr,'-');
    explode();把字符串分解成数组
    $str='2016-06-27';
    $arr=explode('-',$str);

    8、插入删除函数

    array_pop();从最后弹出一个值,返回弹出值
    array_push();从最后压入一个值,返回数组个数
    array_shift();从前面弹出一个值,返回移出值,原数组下标重排
    array_shift($arr);不考虑返回值,等价于array_splice($arr,0,1);
    array_unshift();从前面插入一个值,返回数组个数
    array_unshift($arr,$v);不考虑返回值,等价于$arr=array_merge(array($v),$arr);

    9、其他常用函数

    array_rand();随机取一个key
    shuffle();打乱数组
    array_sum();数组所有值的和
    array_product($arr)求数组乘积
    array range ( mixed $start , mixed $end [, $step = 1 ] )获取一个范围内数组
    小应用

    //生成随机验证码
    $arr=range(0,9);
    $arr2=range('a','z');
    $arr3=range('A','Z');
    $arr4=array_merge($arr,$arr2,$arr3);
    shuffle($arr4);
    $arr5=array_slice($arr4,0,4);
    $str=join($arr5,'');
    echo $str;

    10、超全局数组

    1)$_SERVER 查看服务器信息
    2)$_GET 地址中参数
    localhost/index.php?id=10&name=user1&age=20&sex=nan
    echo "<pre>";
    print_r($_GET);
    echo "</pre>";
    可用于超链接传值、表单传值
    3)$_POST 表单提交的值
    4)$_REQUEST $_GET和$_POST全接收
    速度慢,不推荐使用
    5)$_FILES 文件上传
    6)$_COOKIE 跟踪用户状态
    7)$_SESSION 保存会话信息
    8)$GLOBALS 获取所有全局变量和超全局变量

  • 相关阅读:
    20155305 2016-2017-2 《Java程序设计》实验二 Java面向对象程序设计
    20155305乔磊2016-2017-2《Java程序设计》第八周学习总结
    20155305 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(macOS + IDEA)
    20155305乔磊2016-2017-2《Java程序设计》第七周学习总结
    20155305乔磊2016-2017-2《Java程序设计》第六周学习总结
    2017-2018-1 20155302 《信息安全系统设计基础》第3周学习总结
    20155302 第二周课堂实践
    2017-2018-1 20155302 《信息安全系统设计基础》第1周学习总结
    20155302杨效宸《Java程序设计》课程总结
    20155302实验五 网络编程与安全
  • 原文地址:https://www.cnblogs.com/chuanzi/p/10364499.html
Copyright © 2020-2023  润新知