zoukankan      html  css  js  c++  java
  • PHP常用的数组相关处理函数

    【数组中常用的多种遍历方式】

    【for 和 foreach 略】

     

    【while() 、 list() 、each() 组合循环遍历数组】

     

    each()函数

       a. 需要一个数组作为参数

       b. 返回来的也是一个数组

       c. 返回来的数组是0, 1, key, value四个下标 (固定的)

                0 和key下标是当前参数数组元素的鍵

                1 和value下标是当前对数数组元素的值

       d. 默认认当前元素就是第一个元素

       e. 每执行一次后就会将当前元素向后移动

       f. 如果到最后的元素再执行这个函数,则返回 false

        //Array ( [1] => 1 [value] => 1 [0] => id [key] => id )

        

     

    list()函数

        a. list()=array(); 需要将一个数组赋值给这个函数

        b. 数组中的元素个数,要和 list()函数中的参数个数相同

        c. 数组中的每个元素值会赋值 list()函数中的每个参数,list()将每个参数转为变量

        d. list() 只能接收索引数组

        e. 按索引的下标的顺序

        $user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");

     

    while()函数

        while($arr=each($user)){

           //echo $arr[0]."==>".$arr[1]."<br>";

           echo $arr["key"]."---->".$arr["value"]."<br>";

        }

     

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

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

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

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

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

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

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

        

    【代码示例】    

    <?php
    $user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
    while(list($key, $value)=each($user)){
        echo $key." : ".$value."<br>";
    }
    echo "<hr>";
    reset($user);
    while(list($key, $value)=each($user)){
        echo $key." : ".$value."<br>";
    }
    echo "<hr>";
    reset($user);
    next($user);
    next($user);
    while(list($key, $value)=each($user)){
        echo $key." : ".$value."<br>";
    }
    echo "<hr>";
    reset($user);
    echo current($user)." : ".key($user)."<br>";
    end($user);
    echo current($user)." : ".key($user)."<br>";
    prev($user);
    echo current($user)." : ".key($user)."<br>";
    ?>

    【数组键 /值操作有关的函数】

        1. array_values()  返回数组中所有的值。 提示: 被返回的数组将使用数值键,从 0 开始且以 1 递增。

        2. array_keys()    返回数组中所有的键名。

        3. in_array()  在数组中搜索给定的值     in_array(value,array,true) 检查搜索的数据与数组的值的类型是否相同。

        4. array_key_exists  检查给定的键名或索引是否存在于数组中。

        5. array_flip -- 交换数组中的键和值

        6. array_reverse --  返回一个单元顺序相反的数组

      

    【统计数组元素的个数和惟一性】

        1. count() sizeof();

        2. array_count_values -- 统计数组中所有的值出现的次数

        3. array_unique -- 移除数组中重复的值

    【使用回调函数处理数组的函数】

        1. array_filter()  用回调函数过滤数组中的单元

        2. array_walk()    数组中的每个成员应用用户函数

        3. array_map()     将回调函数作用到给定数组的单元上

    ◆ 实例演示: array_filter () ,取出数组中大于 0的数。

    <?php
     $arr=array(1,2,3,4,5,-6,7,7,8,8,-9,9,10,11,-12);
     $arr1=array_filter($arr, "myfun");
     function myfun($n){
        if($n>0)
           return true;
        else
           return false;
     }
     print_r($arr1);
    ?>

    ◆ 实例演示: array_walk()

    <?php
    $lamp=array("os"=>"linux", "wb"=>"apache", "db"=>"mysql", "la"=>"php");
    array_walk($lamp, "myfun1"); echo '<hr>';
    array_walk($lamp, "myfun2", "========");
    
    function myfun1($value, $key){
        echo "The key '{$key}' has '$value' <br>";
    }
    function myfun2($value, $key, $p){
        echo "The key '{$key}' has {$p} '$value' <br>";
    }
    ?>

     ◆ 实例演示: array_map() ,判断两个数组中的值是否相同。

    <?php
    $lamp=array("os"=>"linux", "wb"=>"apache", "db"=>"mysql", "la"=>"php");
    $lp=array("os"=>"window", "wb"=>"apache", "db"=>"oracle", "la"=>"php");
    $arr=array_map("myfun1", $lamp, $lp);
    function myfun1($n, $t){
        if($n==$t){
           return "same";
        }else{
           return "different";
        }
    }
    print_r($arr);
    ?>

    ◆ 实例演示: array_values ()

    <?php
    $lamp=array("os"=>"linux", "webserver"=>"Apache", "db"=>"MySqL", "laguage"=>"php");
    $arr=array_values($lamp);
    print_r($arr);echo '<hr>';
    
    list($a,$b,$c,$d)=$arr;
    echo $a."<br>";
    echo $b."<br>";
    echo $c."<br>";
    echo $d."<br>";
    ?>

    ◆ 实例演示: array_keys ()

    <?php
    $lamp= array("os"=>"linux", "webserver"=>"Apache", "db"=>"MySql", "laguage"=>100, "html"=>"100");
    $arr1=array_keys($lamp);  print_r($arr1); echo '<hr>'; //取出所有的key
    $arr2=array_keys($lamp, "100");  print_r($arr2); echo '<hr>';//取出符合条件的key
    $arr3=array_keys($lamp, "100", true);  print_r($arr3); //取出符合条件并且类型相同的 key
    ?>

    ◆ 关于 count() 函数,传递true 则计算所有子节点的个数:

    $lamp= array("os"=>"linux", "webserver"=>"Apache", "db"=>"MySql",array(1,2,3,4, array('A','B','C')));
    echo count($lamp, true); // 结果12
    echo count($lamp); // 结果4

    【数组的排序函数】

         1. 简单的数组排序   sort() rsort()

         2. 根据键名对数组排序   ksort() krsort()

         3. 根据元素的值对数组排序   asort() arsort()

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

    5. 根据用户自定义规则对数组排序   usort() uasort() uksort()

     

     6. 多维数组的排序   array_multisort  (较复杂,详见手册)

    【拆分、合并、分解、接合的数组函数】

         1. array_slice(array,offset,length,preserve)   在数组中根据条件取出一段值,并返回。 preserve可选。可能的值: true - 保留键; false - 默认 - 重置键

    2. array_splice()

         3. array_combine();  通过合并两个数组来创建一个新数组。

     4. array_merge();  把一个或多个数组合并为一个数组。

          5. array_intersect(array1,array2,[array3...]);  计算数组的交集。

     

     6. array_diff()

     

     

     

    【数组与数据结构的函数】

        1. 使用数据实现堆栈

            array_push(array);  将一个或多个单元(元素)压入数组的末尾(入栈)。

             array_pop(array);   将数组最后一个单元弹出(出栈)。

    2. 使用队列

             array_unshift()  在数组开头插入一个或多个元素。

             array_shift()    删除数组中的第一个元素,并返回被删除元素的值。

             unset()

           

     

    【其它与数据操作有关的函数】

     

           array_rand(array,number)     从数组中随机选出一个或多个元素,并返回。 number   可选。默认是 1。规定返回多少个随机的元素。  

           shuffle()

           array_sum()

           range(first,second,step)   建立一个包含指定范围的元素的数组。

     

     

  • 相关阅读:
    Delete Node in a Linked List leetcode
    Remove Linked List Elements leetcode
    Remove Linked List Elements
    Remove Element leetcode
    Merge Sorted Array leetcode
    Min Stack leetcode
    Valid Palindrome leetcode
    [LeetCode] 1. Two Sum
    [LeetCode] 520. Detect Capital
    [LeetCode] 791. Custom Sort String
  • 原文地址:https://www.cnblogs.com/rxbook/p/6003559.html
Copyright © 2011-2022 走看看