美文网首页
PHP笔记之数组

PHP笔记之数组

作者: 青鸟evergreen | 来源:发表于2017-02-17 13:35 被阅读30次

    PHP的数组功能很强大,有很多和OC或者其他语言不一样的地方,譬如说其数组元素不限制类型,这种类似于swift的元组。以下是其相关特性:
    1.数组中的元素 由键和值构成,key/value
    2.两种下标类型:①整数(索引数组) ②字符串
    3.[ ]来操作下标,也可以用{}进行互换,建议使用[ ]来指定下标
    4.如果是关联数组,一定要带引号,不要使用常量名称,处理速度较之慢8倍


    数组

    数组声明时,如果[ ]中没有下标,往数组中添加元素是按自动增长的下标顺序来赋值

    $arr = array();
    for($i = 0;$i<2;$i++){
        array[ ] = $i * $i;
    }
    echo'<pre>';//数组的最原始形态语句
    print_r($arr); //array[0] = 0 ;[array[1] = 1;
    echo'</pre>;
    

    数组的自动增长下标默认是从0开始,自动增长的出现过的最大值加1;
    关联数组的字符串下标,不会影响索引下标的排列规则;
    负数也可以做下标;

    $arr[ ] = 10;//下标0
    $arr[ ] = 10;//下标1
    $arr[8] = 10;//下标8
    $arr[ ] = 10;//下标9
    $arr[9] = 10;//下标9覆盖上一个
    $arr[4] = 10;//下标4
    $arr[ ] = 18;//下标10
    $arr['one'] = 66;
    $arr[ ] = 99;//下标11
    $arr[-100] = 11;//下标-100
    $arr[ ]  = 20;//下标12
    

    数组的声明

    方式1:

    $arr =  array("aaa","two"=>"bbb",9=>"ccc","ddd");
    

    方式2:php5.4以后 短数组定义语法

    $arr = ["aaa","bbb",333,9=>444,555];
    

    删除数组中的一个元素使用unset(),下标不会重新索引,需要使用array_values()函数重新索引

    $arr = ["one","two","three","four"];
    unset($arr[2]);//Array ( [0] => one [1] => two [3] => four )
    $arr = array_values($arr);
    print_r(arr);
    //Array ( [0] => one [1] => two [2] => four )
    

    多维数组可以调用方式和OC类似,不过多了一个关联下标的形式

    $arr[1]["one"];
    

    数组的遍历

    for循环

    效率最高,但数组下标比一定连续,关联数组无法遍历出值

    $arr = array("wp","wo","we","ew");
     $num = count($arr);
     for($i=0; $i < $num; $i++) { 
        echo $arr[i];
     }
    

    foreach

    有多少元素,循环多少次

    foreach ($variable as $key => $value) {
        可以把键值都返回
     }
    

    联合使用List(),each()和while循环

    List()函数

    将数组中的元素转为变量使用
    ①等号左边使用List()函数,等号右边只能是一个数组。
    ②数组中有几个元素,在list()中就用几个参数,而且参数必须是变量(新声明的自定义变量),不能是值

    ③只能将索引数组(下标是连续的),转为变量,是从0开始

    ④可以在list()参数中通过,空项选择性的接收数组中的元素

    list($a, ,$c) = array("123","sp","we");
    echo $a."<br>";
    echo $c."<br>"; 
    
    list($name,$pro) = explode("_",$str);
    echo $name."<br>";
    echo $pro."<br>";
    
    each()函数

    只是一个函数,参数就是一个数组,返回值也是一个数组
    ①返回的值是一个数组,数组固定有4个元素,且下标也是固定的(1(值)Value(值)0(下标)key(下标))
    ②each()只处理当前的元素(默认当前元素为第一个元素,指针指向第一个)转为数组信息后,处理完后,指针指向下一个元素
    ③如果指定已经在结束位置了,如果再使用each()获取元素,返回false

    $arr = array("one"=>"wp","wo","we");
        echo '<pre>';
        $one = each($arr); 
    
        print_r($one);
        $one = each($arr);
    
        print_r($one);
        $one = each($arr);
    
        print_r($one);
        $one = each($arr);
    
        var_dump($one);
        echo '</pre>';
    //返回结果
    Array ( [1] => wp [value] => wp [0] => one [key] => one ) 
    Array ( [1] => wo [value] => wo [0] => 0 [key] => 0 ) 
    Array ( [1] => we [value] => we [0] => 1 [key] => 1 ) 
    bool(false) 
    
    List()、each()、while联合使用
    $arr = ["one"=>"妹纸","wp","we","ee"];
    while (list($key,$value) = each($arr)) {
            echo "{$key} => {$value}<br>";
        }
    

    使用数组的内部指针控制函数遍历数组

       next($arr);//下一个
        end($arr);//最后一个
        prev($arr);//前一个
        reset($arr);//重置
        key($arr);//获取当前下标
        current($arr);//获取当前值
    
    超全局数组

    超全局数组,系统已经声明完的变量,可以直接使用。每个预定义数组都有自己独特的功能。
    常用的超全局数组

    $_SERVER 服务器变量,可以获取服务器所有的信息
    $_ENV 环境变量
    $_GET 接收用户通过URL向服务器传的参数
    $_POST 接收用户通过HTTP协议向服务器传的参数 
    $GLOBALS
    $_REQUEST 有安全风险,一般不用
    $_FILES 上传文件信息
    $_COOKIE     
     $_SESSION 
    
     $GLOBALS  = array("123","wp");
        function demo(){
            // echo $GLOBALS.'<br>';
            // print_r($GLOBALS).'<br>';
            foreach ($GLOBALS as $son => $fuck) {
                echo $son.$fuck.'<br>';
            }
        }
        demo();
    

    相关文章

      网友评论

          本文标题:PHP笔记之数组

          本文链接:https://www.haomeiwen.com/subject/ucoxwttx.html