【微信开发】玩转PHP 数组用法!

  • 数组的起始下标可以不从0开始,例子为从2开始。

    $data = array(2=>'A','B','C');     运行结果:$data = array(2=>'A',3=>'B',4=>'C');

 

 


  • unset()   删除整个数组     删除单个数组元素 

        初始数组:$data = array('name'=> '洛初','age'=> 24,'sex'=> '女');

        unset($data);                    运行结果:NULL

        unset($data['name']);       运行结果:$data = array('age'=>24,'sex'=>'女');

 


  • list()    把数组中的值赋给一些变量 

        $data = array('洛初','女','24');

        list($a,$b,$c) = $data;             运行结果:$a='洛初'; $b='女'; $c='24';

        注释:该函数只用于数字索引的数组,且假定数字索引从 0 开始。      


  • range()    自动生成一个包含指定范围单元的数据

        $data = range(0,5);        运行结果:$data = array(0,1,2,3,4,5);

 


  • array_count_values(array) 用于统计数组中所有值出现的次数。   统计数组中相同元素的个数

     

        $data = array('name'=> '洛初','age'=> 24,'sex'=> '女','nickname'=>'洛初');

        array_count_values($data);            运行结果:array('洛初'=>2,'24'=>1,'女'=>1);


  • array_change_key_case(array,case)   把数组中所有键更改为小写或大写。     将数组中所有的键转变大小写 

        

        array必需。规定要使用的数组。

        case        可选。可能的值:CASE_LOWER - 默认值。将数组的键转换为小写字母。CASE_UPPER - 将数组的键转换为大写字母。

        $data = array('Name'=> '洛初','Age'=> 24,'Sex'=> '女');

        array_change_key_case($data,CASE_UPPER);    

        运行结果:$data = array('NAME'=> '洛初','AGE'=> 24,'SEX'=> '女');

         array_change_key_case($data,CASE_LOWER);  

        运行结果:$data = array('name'=> '洛初','age'=> 24,'sex'=> '女');


  • array_chunk(array,size,preserve_key)    把一个数组分割为新的数组块。    把数组分割为新的数组块

     

        array:必需,数组;   

        size:必需,规定每个新数组包含多少个元素   

        preserve_key:可选,true - 保留原始数组中的键名。false - 默认。每个结果数组使用从零开始的新数组索引

        $data = array('Name'=> '洛初','Age'=> 24,'Sex'=> '女');

        array_chunk($data,2);    

        运行结果:$data = array(0=>array(0=>'洛初',1=>24),1=>array(0=>'女'));

 


  • array_column(array,column_key,index_key)    返回输入数组中某个单一列的值

     

  •   

  • array:必需,数组;   

        column_key:必需,需要返回值的列。该参数也可以是NULL,此时将返回整个数组 

        index_key:可选,用作返回数组的索引或键的列。

        $data = array(    array('id'=>1,'name'=>'洛初'),    array('id'=>2,'name'=>'洛秋'),    array('id'=>2,'name'=>'洛末'),);

        array_column($data,'name');        运行结果:$data = array(0=>'洛初',1=>'洛秋',2=>'洛末');


  • array_combine(keys,values)   通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值

        keys:必需,键名数组;        values:必需,键值数组;

        $fname=array("Bill","Steve","Mark");    $age=array("60","56","31");

        array_combine($fname,$age);        运行结果:array('Bill'=>60,'Steve'=>56,'Mark'=>31);

        注释:键名数组和键值数组的元素个数必须相同!如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。 


  • 填充数组

        array_fill(index,number,value)  用给定的键值填充数组。        用键值填充数组

        index:必需,被返回数组的第一个索引;

        number:必需,规定要插入的元素数;

        value:必需,规定供填充数组所使用的值 ;

        array_fill(3,4,blue);        运行结果:array("3"=>"blue","4"=>"blue","5"=>"blue","6"=>"blue");

 

        array_fill_keys(keys,value)  用指定键名的给定键值填充数组。   使用指定的键和值填充数组

        keys:必需,使用该数组的值作为键。非法值将被转换为字符串;

        value:必需,填充数组所使用的值;

        $keys = array("a","b","c","d");    array_fill_keys($keys,"blue);     运行结果:array("a"=>"blue","b"=>"blue","c"=>"blue","d"=>"blue");


  • array_filter(array,callbackfunction)  用回调函数过滤数组中的元素

        array必需。规定要过滤的数组。

        callbackfunction必需。规定要使用的回调函数。

        该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。

        function test_odd($var){    return($var & 1);    }

        $a1=array("a","b",2,3,4);        array_filter($a1,"test_odd");        运行结果:array("3"=>"3");


  • array_flip(array)    交换数组中的键和值。    反转数组中所有的键以及它们关联的值       

        $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");    array_flip($a1);    运行结果:array("red"=>"a","green"=>"b","blue"=>"c","yellow"=>"d");


  • array_key_exists(key,array)   检查指定的键名是否存在于数组中。   检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false       

        key必需。规定键名。        array必需。规定数组。

 


 

  • array_keys(array,value,strict)   返回数组中所有的键名。 返回包含数组中所有键名的一个新数组       

        array必需。规定数组。

        value可选。您可以指定键值,然后只有该键值对应的键名会被返回。

        strict         可选。与 value 参数一起使用。可能的值:true - 返回带有指定键值的键名。依赖类型,数字 5 与字符串 "5" 是不同的。    false - 默认值。不依赖类型,数字 5 与字符串 "5" 是相同的。

 

        $a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");

        array_keys($a);        运行结果:array("0"=>"Volvo","1"=>"BMW","2"=>"Toyota");

        array_keys($a,"Highlander");         运行结果:array("0"=>"Toyota");

        $a=array(10,20,30,"10");

        array_keys($a,"10",false);     运行结果:array("0"=>0,"1"=>3);

        array_keys($a,"10",true);     运行结果:array("0"=>3);

 


  • array_map(myfunction,array1,array2,array3...)   把数组中的每个值发送到用户自定义函数,返回新的值。 将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。       

        myfunction必需。用户自定义函数的名称,或者是 null。

        array1必需。规定数组。          array2可选。规定数组。        array3可选。规定数组。

 

        将函数名赋值为 null 时:

        $a1=array("Dog","Cat");$a2=array("Puppy","Kitten");array_map(null,$a1,$a2);

        运行结果:Array ( [0] => Array ( [0] => Dog [1] => Puppy ) [1] => Array ( [0] => Cat [1] => Kitten ) );


  • array_multisort(array1,sorting order,sorting type,array2,array3...)      对多个数组或多维数组进行排序。       返回排序数组,您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。       

        sorting order    可选。规定排列顺序。可能的值:    SORT_ASC - 默认。按升序排列 (A-Z)。    SORT_DESC - 按降序排列 (Z-A)。

        sorting type    可选。规定排序类型。可能的值:

                SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。

                SORT_NUMERIC - 把每一项作为数字来处理。

                SORT_STRING - 把每一项作为字符串来处理。

                SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。

                SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。

                SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

 

        注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。

    您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。

                  参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。


        array_values(array)    返回数组中所有的值。

        count(array,mode)     返回数组中元素的数目。

        sizeof(array,mode)     count() 的别名。

        compact(var1,var2...)    创建包含变量名和它们的值的数组。

        extract(array,extract_rules,prefix)    从数组中将变量导入到当前的符号表。

        in_array(search,array,type)    检查数组中是否存在指定的值。

        key(array)    从关联数组中取得键名。

        range(low,high,step)     创建包含指定范围单元的数组。

        shuffle(array)    将数组打乱。    该函数为数组中的元素分配新的键名。已有键名将被删除

        array_pad(array,size,value)     用值将数组填补到指定长度。        如果您将 size 参数设置为负数,该函数会在原始数组之前插入新的元素。

        array_pop(array)     删除数组的最后一个元素(出栈)。

        array_push(array,value1,value2...)将一个或多个元素插入数组的末尾(入栈)。

        array_shift(array)     删除数组中首个元素,并返回被删除元素的值。    如果键名是数字的,所有元素都会获得新的键名,从 0 开始,并以 1 递增

        array_unshift(array,value1,value2,value3...)    在数组开头插入一个或多个元素。    该函数会返回数组中元素的个数。

        array_product(array)        计算数组中所有值的乘积。

        array_sum(array)    返回数组中值的和。

        array_rand(array,number)        返回数组中一个或多个随机的键名。

        array_reduce(array,myfunction,initial)    通过使用用户自定义函数,以字符串返回数组。

        array_replace(array1,array2,array3...)    使用后面数组的值替换第一个数组的值。

        array_replace_recursive(array1,array2,array3...)     递归地使用后面数组的值替换第一个数组的值。

        array_merge(array1,array2,array3...)    把一个或多个数组合并为一个数组。

        array_merge_recursive(array1,array2,array3...)    递归地合并一个或多个数组。

        array_reverse(array,preserve)        以相反的顺序返回数组。对于整数键名,如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。

        array_search(value,array,strict)        搜索数组中给定的值并返回键名。 

        array_slice(array,start,length,preserve)    返回数组中被选定的部分。

        array_splice(array,start,length,array)    删除并替换数组中指定的元素。

        array_unique(array)    删除数组中的重复值。    当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。

        array_walk(array,myfunction,userdata...)    对数组中的每个成员应用用户函数。

        array_walk_recursive(array,myfunction,parameter...)    对数组中的每个成员递归地应用用户函数。

 


 

  • 排序

       arsort(array,sortingtype)    对关联数组按照键值进行降序排序。

       asort(array,sortingtype)    对关联数组按照键值进行升序排序。

       krsort(array,sortingtype)    对数组按照键名逆向排序。

       ksort(array,sortingtype)    对数组按照键名排序。

       natcasesort(array)    用“自然排序”算法对数组进行不区分大小写字母的排序。

       natsort(array)    用“自然排序”算法对数组排序。

       rsort(array,sortingtype)    对数组逆向排序。

       sort(array,sortingtype)    对数组排序。   

       uasort(array,myfunction)    使用用户自定义的比较函数对数组中的键值进行排序。

       uksort(array,myfunction)     使用用户自定义的比较函数对数组中的键名进行排序。

       usort(array,myfunction)    使用用户自定义的比较函数对数组进行排序。

 


 

  • 数组指针的移动

        current(array)    返回数组中的当前元素。

        each(array)    返回数组中当前的键/值对。

        end(array)    将数组的内部指针指向最后一个元素。

        prev(array)    将数组的内部指针倒回一位。

        next(array)    将数组中的内部指针向前移动一位。

        reset(array)    将数组的内部指针指向第一个元素。

        pos(array)    current() 的别名。

 

    注释: 如果数组包含空的单元,或者单元的值是 0 则该函数碰到这些单元也返回 FALSE。

             要正确遍历可能含有空单元或者单元值为 0 的数组,请参见 each() 函数。

    注释:each() 函数返回当前元素的键名和键值,并将内部指针向前移动。

            该元素的键名和键值会被返回带有四个元素的数组中。两个元素(1 和 Value)包含键值,两个元素(0 和 Key)包含键名。

            如果内部指针越过了数组范围,本函数将返回 FALSE。  

 


 

  • 比较数组,返回差集

    array_diff(array1,array2,array3...)     比较数组,返回差集(只比较键值)。

    array_diff_assoc(array1,array2,array3...)  比较数组,返回差集(比较键名和键值)。

    array_diff_key(array1,array2,array3...)     比较数组,返回差集(只比较键名)。

    array_diff_uassoc(array1,array2,array3...,myfunction)     比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。

        array_udiff(array1,array2,array3...,myfunction)        比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。

        array_diff_ukey(array1,array2,array3…,myfunction)    比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。

        array_udiff_assoc(array1,array2,array3...,myfunction)    比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

        array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)        比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。

    • 比较数组,返回交集

      array_intersect(array1,array2,array3...)     比较数组,返回交集(只比较键值)。

      array_intersect_assoc(array1,array2,array3...)      比较数组,返回交集(比较键名和键值)。

      array_intersect_key(array1,array2,array3...)      比较数组,返回交集(只比较键名)。

      array_intersect_uassoc(array1,array2,array3...,myfunction)      比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。

                array_intersect_ukey(array1,array2,array3...,myfunction)  比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。

                array_uintersect(array1,array2,array3...,myfunction)    比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。

                array_uintersect_assoc(array1,array2,array3...,myfunction)比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

                array_uintersect_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。

posted @ 2017-02-14 16:47  jucheng  阅读(732)  评论(0编辑  收藏  举报