Android程式員學PHP開發(24)-數組操作相關函數(2)回呼函數篇-PhpStorm

來源:互聯網
上載者:User
本篇主要是 使用回呼函數處理數組,2種方式:

函數調用,函數結構一目瞭然

匿名函數 ,即時使用,安全性高

下面示範幾個函數的使用:主要是瞭解回呼函數的使用:

count() 計算數組中的單元數目或對象中的屬性個數

array_count_values() 統計數組中所有的值出現的次數

array_unique() 移除數組中重複的值

array_filter() 用回呼函數過濾數組中的單元

array_walk() 使用使用者自訂函數對數組中的每個元素做回調處理

array_map() 為數組的每個元素應用回呼函數

通過array_filter()和array_walk()重點瞭解一下回呼函數的使用,尤其是安全性較高的匿名函數

<?php    /**     * 數組的相關處理函數:     * http://www.php.cn/     *     * 下面示範幾個函數的使用:主要是瞭解回呼函數的使用     * count() 計算數組中的單元數目或對象中的屬性個數     * array_count_values() 統計數組中所有的值出現的次數     * array_unique() 移除數組中重複的值     * array_filter() 用回呼函數過濾數組中的單元     * array_walk() 使用使用者自訂函數對數組中的每個元素做回調處理     * array_map() 為數組的每個元素應用回呼函數     * 通過array_filter()和array_walk()重點瞭解一下回呼函數的使用,尤其是安全性較高的匿名函數     */    $lamp = array("os"=>"Linux", "webserver"=>"Apache", "db"=>"MySQL", "language"=>"PHP");    echo '---------- print_r() ----------<br>';    print_r($lamp); // 列印結果:Array ( [os] => Linux [webserver] => Apache [db] => MySQL [language] => PHP )    echo '<br>';    /**     * count() 計算數組中的單元數目或對象中的屬性個數     */    echo '---------- count() 字串 ----------<br>';    $str = "hello world";    $str2 = "";    var_dump(count($str)); // 列印結果:int(1)    echo '<br>';    var_dump(count($str2)); // 列印結果:int(1)    echo '<br>';    echo '---------- count() 數組 ----------<br>';    echo count($lamp); // 列印結果:4    echo '<br>';    echo '---------- count() 多維陣列 ----------<br>';    $web = array(            "lamp"=>array("os"=>"Linux", "webserver"=>"Apache", "db"=>"MySQL", "language"=>"PHP"),            "lamp2"=>array("os"=>"Linux", "webserver"=>"Apache", "db"=>"MySQL", "language"=>"PHP"),            "lamp3"=>array("os"=>"Linux", "webserver"=>"Apache", "db"=>"MySQL", "language"=>"PHP")        );    echo count($web); // 列印結果:3    echo '<br>';    echo count($web,1); // 列印結果:15 , 數組有3個元素,子數組有12個元素    echo '<br>';    /**     * array_count_values() 統計數組中所有的值出現的次數     */    echo '---------- array_count_values() ----------<br>';    $lamp4 = array("os"=>"Linux", "webserver"=>"Apache", "db"=>"MySQL", "db2"=>"MySQL", "language"=>"PHP");    echo print_r(array_count_values($lamp4)); // 列印結果:Array ( [Linux] => 1 [Apache] => 1 [MySQL] => 2 [PHP] => 1 ) 1    echo '<br>';    /**     * array_unique() 移除數組中重複的值     * 第一次出現的value保留其key,其他的移除     */    echo '---------- array_unique() ----------<br>';    $lamp5 = array("os"=>"Linux", "webserver"=>"Apache", "db"=>"MySQL", "db2"=>"MySQL", "language"=>"PHP");    echo print_r(array_unique($lamp5)); // 列印結果:Array ( [os] => Linux [webserver] => Apache [db] => MySQL [language] => PHP ) 1    echo '<br>';    /**     * array_filter() 用回呼函數過濾數組中的單元     */    echo '---------- array_filter() ----------<br>';    $arr = array(1,2,false,-3,null,-2,3,4,"",5,-5,-4,-1);    echo '<pre>';    var_dump($arr);    /*列印結果:            array(13) {              [0]=>              int(1)              [1]=>              int(2)              [2]=>              bool(false)              [3]=>              int(-3)              [4]=>              NULL              [5]=>              int(-2)              [6]=>              int(3)              [7]=>              int(4)              [8]=>              string(0) ""              [9]=>              int(5)              [10]=>              int(-5)              [11]=>              int(-4)              [12]=>              int(-1)            }    */    echo '---------- array_filter() 不傳參調用----------<br>';    var_dump(array_filter($arr));    /*列印結果:結果中,false、null、"",被過濾掉了            array(10) {              [0]=>              int(1)              [1]=>              int(2)              [3]=>              int(-3)              [5]=>              int(-2)              [6]=>              int(3)              [7]=>              int(4)              [9]=>              int(5)              [10]=>              int(-5)              [11]=>              int(-4)              [12]=>              int(-1)            }      */    echo '---------- array_filter() 通過自訂函數過濾 ----------<br>';    function myfun($value){ // 自己寫的函數,大於等於0返回真,否則返回假        if ($value>=0){            return true;        }else{            return false;        }    }    var_dump(array_filter($arr,"myfun"));    /*列印結果:結果中,小於0的,被過濾掉了            array(8) {              [0]=>              int(1)              [1]=>              int(2)              [2]=>              bool(false)              [4]=>              NULL              [6]=>              int(3)              [7]=>              int(4)              [8]=>              string(0) ""              [9]=>              int(5)            }    */    echo '---------- array_filter() 通過匿名函數過濾 ----------<br>';    echo '---------- 當其他地方不需要調用這個函數,推薦使用匿名函數,方便且安全 ----------<br>';    var_dump(array_filter($arr, function ($value){        return !($value%2==0);    }));    /*列印結果:結果中,2的倍數,被過濾掉了            array(6) {              [0]=>              int(1)              [3]=>              int(-3)              [6]=>              int(3)              [9]=>              int(5)              [10]=>              int(-5)              [12]=>              int(-1)            }    */    /**     * array_walk() 使用使用者自訂函數對數組中的每個元素做回調處理     */    echo '---------- array_walk() ----------<br>';    $arr2 = array(1,2,3,4,5);    print_r($arr2);    echo '<br>';    /*列印結果:數組原型列印            Array            (                [0] => 1                [1] => 2                [2] => 3                [3] => 4                [4] => 5            )    */    echo '---------- array_walk() 沒有引用 $value 調用函數 ----------<br>';    function myfun2($value){ // 沒有引用 $value        $value=$value*$value;    }    array_walk($arr2,"myfun2"); // 沒有引用 $value    print_r($arr2);    echo '<br>';    /*列印結果:            Array            (                [0] => 1                [1] => 2                [2] => 3                [3] => 4                [4] => 5            )    */    echo '---------- array_walk() 有引用 &$value 調用函數 ----------<br>';    function myfun3(&$value){ // 引用 &$value        $value=$value*$value;    }    array_walk($arr2,"myfun3"); // 引用 &$value    print_r($arr2);    echo '<br>';    /*列印結果:            Array            (                [0] => 1                [1] => 4                [2] => 9                [3] => 16                [4] => 25            )    */    echo '---------- array_walk() 同時處理key和value ----------<br>';    $arr3 = array("one"=>1, "two"=>2, "three"=>3, "four"=>4, "five"=>5);    print_r($arr3);    echo '<br>';    /*列印結果:數組原型列印            Array            (                [one] => 1                [two] => 2                [three] => 3                [four] => 4                [five] => 5            )    */    echo '---------- array_walk() 調用函數有2個參數 即,同時對key和value操作 ----------<br>';    function myfun4(&$value,$key){        $value=$value*$value;        echo $key."~~~~~".$value."<br>";    }    array_walk($arr3,"myfun4");    /*列印結果:            one~~~~~1            two~~~~~4            three~~~~~9            four~~~~~16            five~~~~~25    */    echo '---------- array_walk() 調用函數有2個參數 即,同時對key和value操作 匿名函數----------<br>';    array_walk($arr3,function ($value, $key){        echo $key."~~~~~".$value."<br>";    });    /*列印結果:            one~~~~~1            two~~~~~4            three~~~~~9            four~~~~~16            five~~~~~25    */    /**     * array_map() 為數組的每個元素應用回呼函數     */    echo '---------- array_map() ----------<br>';    $arr4 = array(1,2,3,4,5);    $arr5 = array(6,7,8,9,0);    print_r($arr4);    echo '<br>';    /*列印結果:數組原型列印            Array            (                [0] => 1                [1] => 2                [2] => 3                [3] => 4                [4] => 5            )    */    echo '---------- array_map() 1 ----------<br>';    function myfun5($value){        return $value*$value*$value;    }    $arr4new = array_map("myfun5", $arr4);    print_r($arr4new);    echo '<br>';    /*列印結果:            Array            (                [0] => 1                [1] => 8                [2] => 27                [3] => 64                [4] => 125            )    */    echo '---------- array_map() 2 注意return ----------<br>';    function myfun6($value){        echo $value*$value*$value."<br>";    }    $arr4new = array_map("myfun6", $arr4);    print_r($arr4new);    echo '<br>';    /*列印結果:數組裡的value沒了,因為在函數裡沒有return,所以,使用array_map()注意return            1            8            27            64            125            Array            (                [0] =>                [1] =>                [2] =>                [3] =>                [4] =>            )    */    echo '---------- array_map() 3 ----------<br>';    function myfun7($value, $value2){        echo "$value~~~~~$value2<br>";        return 1;    }    $arr45new = array_map("myfun7", $arr4,$arr5);    print_r($arr45new);    echo '<br>';    /*列印結果:            1~~~~~6            2~~~~~7            3~~~~~8            4~~~~~9            5~~~~~0            Array            (                [0] => 1                [1] => 1                [2] => 1                [3] => 1                [4] => 1            )    */    echo '---------- array_map() 4 ----------<br>';    $arr45new = array_map(null, $arr4,$arr5);    print_r($arr45new);    echo '<br>';    /*列印結果:            Array            (                [0] => Array                    (                        [0] => 1                        [1] => 6                    )                [1] => Array                    (                        [0] => 2                        [1] => 7                    )                [2] => Array                    (                        [0] => 3                        [1] => 8                    )                [3] => Array                    (                        [0] => 4                        [1] => 9                    )                [4] => Array                    (                        [0] => 5                        [1] => 0                    )            )    */    echo '---------- array_map() 5 ----------<br>';    $arr6 = array(1,2,3,4,5);    $arr7 = array("one","two","three");    $arr8 = array("aa","bb","cc","dd");    $arr678new = array_map(null,$arr6,$arr7,$arr8);    print_r($arr678new);    echo '<br>';    /*列印結果:            Array            (                [0] => Array                    (                        [0] => 1                        [1] => one                        [2] => aa                    )                [1] => Array                    (                        [0] => 2                        [1] => two                        [2] => bb                    )                [2] => Array                    (                        [0] => 3                        [1] => three                        [2] => cc                    )                [3] => Array                    (                        [0] => 4                        [1] =>                        [2] => dd                    )                [4] => Array                    (                        [0] => 5                        [1] =>                        [2] =>                    )            )    */

以上就是Android程式員學PHP開發(24)-數組操作相關函數(2)回呼函數篇-PhpStorm的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.