PHP入門03 -- 數組與數據結構

1、數組php

  直接賦值聲明數組html

  一、一個數組中存的是多個內容,數組中的內容叫做「元素」;算法

  二、每一個元素都是由  鍵和值  key/value   key下標數組

    $a = array("one"=>"1111", "two"=>"2222");服務器

  三、就是經過 key  使用 值session

  四、下標有兩種類型: 一種是整數(索引數組)、一種是字符串(關聯數組)函數

  五、[ ] 來操做下標,也可使用  { }  驚醒互換,建議使用 [ ]  來指定下標;post

  六、在使用下標是,若是是關聯數組,必定要使用,不要使用常量名稱測試

  七、使用  =>  符號指定下標spa

  八、刪除數組中的一個元素使用unset(),下標不會從新索引,須要使用array_values函數從新索引;

<?php
        $arr['one'] = 1;
        $arr['two'] = 2;
        $arr['three'] = 3;
     $arr1 = array("aa", 9=>"bbb");//使用  =>  符號指定下標
        print_r($arr);//打印數組
        echo $arr['one'];//單獨使用數組
        echo "11$arr[three]11";//輸出11311

    $arr2 = ["1", "2", "3"];
    unset($arr2[2]);
    $arr = array_values($arr2);
?>

 2、數組遍歷

  一、數組有多少個元素,foreach就循環屢次

  二、foreach會將數組中的元素 在每次循環中,一次將元素的值給定義的變量,在每次循環中用到這個變量,即用到了當前的數組中的元素

  三、foreach(數組  as  自定義變量 ){ }

  四、foreach(數組  as  下標變量  => 值變量 ){ }  //下標在前,值在後 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php
            $group = [
                "price"=>888,
                "agne"=>666,
                ["name"=>"zs", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
                ["name"=>"ls", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
                ["name"=>"ww", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
                ["name"=>"zl", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
                ["name"=>"sq", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"],
                ["name"=>"wb", "age"=>20, "sex"=>"男", "email"=>"aaa@bbb.com"]
            ];

            // echo "<pre>";//pre:按照源代碼輸出
            echo '<table border="1" width="800" align="center">';
            echo '<caption><h1>數組轉爲表格</h1></caption>';
            
            foreach ($group as $key=>$row) {
                echo '<tr>';
                if (is_array($row)) {
                    foreach ($row as $col) {
                        echo '<td>'.$col.'</td>';
                    }    
                } else {
                    echo '<td>'.$key.':'.$row.'</td>';
                }
                echo '</tr>';            
            }
            echo '</table>';
        ?>
    </body>
</html>

3、list() 函數(可是這個函數和其它函數用法不一樣)

  一、做用:將數組中的元素轉爲變量使用

    一、等號左邊使用 list() 函數,等號(=)右邊只能是一個數組

    二、數組中有幾個元素,在 list()中就用幾個參數,並且參數必須是變量(新聲明的自定義變量),不能是值

    三、只能將索引數組(下標是連續),轉爲變量,是按下表 0 開始找的;

    四、能夠在 list()參數中經過,空項選擇性的接受數組中的元素;

list($a, $b, $c) = array("AAA", "BBB", "CCC");
echo $a;//輸出 AAA

4、list、each和while 循環遍歷數組

$arr = ["one"=>"ONE", "TWO", "THREE"];
while (list($key, $val) = each($arr) ) {
      echo "{$key} => {$val} <br>";
}

5、超全局數組(預約義變量)

  一、超全局數據(變量),在PHP的腳本中,已經聲明完的變量,你能夠直接就去使用便可!變量的名字已經規定好了

    $_SERVER (服務器變量)、$_ENU(環境變量)、$_GET(HTTP  GET變量)、$_POST(HTTP  POST變量)、

    $_REQUEST(request 變量)、$_FILES(HTTP 文件上傳變量)、$_SESSION(session 變量)、$GLOBALS(Global  變量)

  二、數組 (關聯數組),就和你本身聲明的數組是同樣的操做方式;

  三、每一個預約義的數組都有本身獨特的能力

  四、$_GET  接受用戶經過URL 向服務器傳的參數    get

  五、$_POST 接受用戶經過 http 協議向服務器傳的參數   http   post

   <a href="demo.php?action[]=add&action[]=mod&id=5&name=admin">測試頁面</a>
    <form action="demo.php?age=www&dd=yy" method="post">
        unsername: <input type="text" name="name"  /><br />
        age: <input type="text" name="age"  /><br />
        sex: <input type="text" name="sex"  /><br />
        <input type="submit" value="提交" />
    </form>

      <!--  demo.php

        print_r($_GET);
        echo "<br>";
        print_r($_POST); -->

   六、array_values  --- 返回數組中全部的值 ---  格式:array  array_values( array input )  

$a = array("name"=>"zs", "age"=>20, "sex"=>"男");
$values = array_values($a);
var_dump($values);
//array(3){[0]=>string(4)"張三" [1]=>int(20) [2]=string(2)"男"}

  七、array_keys  --  返回數組中 keys  值   ---   格式:array  array_keys( array );

$a = array("name"=>"zs", "age"=>20, "sex"=>"男");
$keys = array_keys($a);
print_r($keys);
//Array ( [0] => name [1] => age [2] => sex )

  八、in_array -- 檢查數組中是否存在某個值  --- 格式:bool  in_array(數值對象,array,[, bool $strict = FALSE ]);

    第三個參數:strict 的值爲 TRUEin_array() 函數還會檢查 needle類型是否和 haystack 中的相同。  

  九、array_search在數組中搜索給定的值,若是成功則返回相應的鍵名   格式:mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>

  十、array_key_exists檢查給定的鍵名或索引是否存在於數組中

  十一、array_flip交換數組中的鍵和值

  十二、count計算數組中的單元數目或對象中的屬性個數   格式:int count ( mixed $var [, int $mode = COUNT_NORMAL ] )

  1三、array_count_values統計數組中全部的值出現的次數

  1四、array_unique移除數組中重複的值

  1五、array_filter用回調函數過濾數組中的單元 

        $arr = array(1,2,3,-4,false,6,5,7,8,"",-1,-2,-4,null,0);
        var_dump(array_filter($arr));//默認去掉值爲false的值

        function myfun($value){//去掉小於0數值
            if ($value >= 0) {
                return true;
            }else{
                return false;
            }
        }
        var_dump(array_filter($arr, "myfun"));
        
        //匿名函數  array_values()重置數組  
        var_dump(array_values(array_filter($arr, function($value){
            return $value%2 == 0;
        })));        

  1六、array_walk使用用戶自定義函數對數組中的每一個元素作回調處理    格式:bool array_walk ( array &$array , callable $funcname [, mixed $userdata = NULL ] )

  1七、array_map將回調函數做用到給定數組的單元上    格式:array array_map ( callable $callback , array $arr1 [, array $... ] )

  1八、array_slice從數組中取出一段   格式:array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

  1九、array_merge合併一個或多個數組    格式:array array_merge ( array $array1 [, array $... ] )

  20、array_intersect計算數組的交集(鍵名不保留)    格式:array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

  2一、array_diff計算數組的差集(鍵名不保留)  格式:array array_diff ( array $array1 , array $array2 [, array $... ] )

  2二、array_push將一個或多個單元壓入數組的末尾(入棧)  格式:int array_push ( array &$array , mixed $var [, mixed $... ] )

  2三、array_pop將數組最後一個單元彈出(出棧)  格式:mixed array_pop ( array &$array )

  2四、array_unshift在數組開頭插入一個或多個單元(隊列)  格式:int array_unshift ( array &$array , mixed $var [, mixed $... ] )

  2五、array_shift將數組開頭的單元移出數組 (隊列) 格式:mixed array_shift ( array &$array )

  2六、array_rand從數組中隨機取出一個或多個單元    格式:mixed array_rand ( array $input [, int $num_req = 1 ] )

  2七、shuffle將數組打亂    格式:bool shuffle ( array &$array )

  2八、range創建一個包含指定範圍單元的數組    格式:array range ( mixed $start , mixed $limit [, number $step = 1 ] )

  2九、array_fill用給定的值填充數組    格式:array array_fill ( int $start_index , int $num , mixed $value )

6、排序   

  1ksort對數組按照鍵名排序;krsort ( 降序

  二、asort對數組進行排序並保持索引關係(關聯數據排序)   語法:bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

  三、natsort用"天然排序"算法對數組排序,默認區分大小寫(natcasesort:不區分大小寫)   語法: bool natsort ( array &$array )

    本函數實現了一個和人們一般對字母數字字符串進行排序的方法同樣的排序算法並保持原有鍵/值的關聯,這被稱爲"天然排序"。

相關文章
相關標籤/搜索