數組初始

空數組php

    $arr=array();
    var_dump($arr);

gettype():獲得變量的類型html

    echo gettype($arr);//array(0) {}

經過is_array():檢測變量是否爲數組sql

    var_dump(is_array($arr));//arraybool(true)

若是數組下標重複,後面的覆蓋前面的值數組

    $arr=array(
      'a',
      0=>'b'
    );
    var_dump($arr);
    //array(1) {
    //[0]=>
    //  string(1) "b"
    //}

若是新添加元素沒有指定下標,它的下標爲已有下標最大值加1(已有下標不全爲負數)函數

    $arr=array(
    'a','b','c',
      5=>'d',
      19=>'e',
      'f'
    );
    //var_dump($arr);
    //array(6) {
    //    [0]=>
    //  string(1) "a"
    //    [1]=>
    //  string(1) "b"
    //    [2]=>
    //  string(1) "c"
    //    [5]=>
    //  string(1) "d"
    //    [19]=>
    //  string(1) "e"
    //    [20]=>
    //  string(1) "f"
    //}

若是已有下標都爲負數,那麼新添加元素的下標從0開始spa

    $arr=array(
      -12=>'a',
      -43=>'b',
      'c'
    );
    var_dump($arr);
    //array(3) {
    //    [-12]=>
    //  string(1) "a"
    //    [-43]=>
    //  string(1) "b"
    //    [0]=>
    //  string(1) "c"
    //}

動態建立下標連續的索引數組指針

    $arr1[]=12;
    $arr1[]=45678.9;
    $arr1[]=true;
    print_r($arr1);
    //Array
    //(
    //    [0] => 12
    //    [1] => 45678.9
    //    [2] => 1
    //)

快速建立下標連續的索引數組code

    $arr=range(1,10);
    print_r($arr);
    //Array
    //(
    //    [0] => 1
    //    [1] => 2
    //    [2] => 3
    //    [3] => 4
    //    [4] => 5
    //    [5] => 6
    //    [6] => 7
    //    [7] => 8
    //    [8] => 9
    //    [9] => 10
    //)

手動指定步長的數組htm

    $arr=range(1,10,2);
    print_r($arr);
    //Array
    //(
    //    [0] => 1
    //    [1] => 3
    //    [2] => 5
    //    [3] => 7
    //    [4] => 9
    //)

    $arr=range('a','z');//97~122
    print_r($arr);

經過compact建立數組的時候,只能寫已經存在的變量的名稱,不須要加$blog

    $a=12;
    $b=false;
    $c=null;
    $userInfo3=compact('a','b','c');
    print_r($userInfo3);
    //Array
    //(
    //    [a] => 12
    //    [b] => 
    //    [c] => 
    //)

定義常量數組
const在5.6以後能夠定義常量

    const ARR2=[
      'a'=>'aa',
      'b'=>'bb'
    ];
    print_r(ARR2);

經過define()定義常量數組

    define('CUSTOM_UPLOAD_ERRORS',[
      'ext_error'=>'上傳文件擴展名不符合規範',
      'maxsize_error'=>'上傳文件大小不符合規範'
    ]);
    print_r(CUSTOM_UPLOAD_ERRORS);
    echo CUSTOM_UPLOAD_ERRORS['ext_error'];

刪除指定元素unset

    $arr=['a','b','c'];
    unset($arr[0]);
    print_r($arr);
    //Array
    //(
    //    [1] => b
    //    [2] => c
    //)

臨時轉換成數組

    $var=null;//null轉化成空數組
    $res=(array)$var;
    var_dump($res);
    array(0) {
    }

永久轉換成數組,settype($var,$type)

    $var=123;
    settype($var,'array');
    var_dump($var);
    array(1) {
        [0]=>
      int(123)
    }

合併數組
若是數組鍵名相同,只會使用左邊數組元素的值

    $arr1=['a','b','c'];
    $arr2=['d','e','f'];
    $newArr=$arr1+$arr2;
    print_r($newArr);
    //Array
    //(
    //    [0] => a
    //    [1] => b
    //[2] => c
    //)

== 比較數組的鍵名和鍵值是否相同,若是相同返回true,不然返回false
=== 既要比較鍵名和鍵值是否相同,並且順序也要相同

    $a=[
      3=>'a',
      '5'=>true
    ];
    $b=[
      5=>1,
      '3'=>'a'
    ];
    $c=[
      '3'=>'a',
      '5'=>1
    ];
    var_dump($a==$b,$a===$b,$a==$c,$a===$c);//true false true false

數組運用

經過foreach遍歷數組

     $arr=[
       5=>'a',
       12=>'b',
       -123=>'c',
       34=>'d'
     ];
     foreach($arr as $v){
       echo $v,"\n";//a b c d
     }
     foreach($arr as $k=>$v){
       echo $k,'--',$v,"\n";
    //     5--a
    //     12--b
    //     -123--c
    //     34--d
     }

能夠經過:和endforeach代替{}

    foreach($arr as $val):
      echo $val;
    endforeach;

foreach再也不改變內部數組指針

    $arr=[0,1,2];
    foreach($arr as &$val){
      var_dump(current($arr));
    }

foreach 經過值遍歷時,操做的值爲數組的副本

    $arr=[0,1,2];
    $ref=&$arr;
    //老版本會跳過1
    foreach($arr as $val){
      echo $val,'<br/>';//0 1 2
      unset($arr[1]);
    }
    var_dump($arr,$ref);
    //array(2) {
    //    [0]=>
    //  int(0)
    //  [2]=>
    //  int(2)
    //}
    //array(2) {
    //    [0]=>
    //  int(0)
    //  [2]=>
    //  int(2)
    //}

foreach經過引用遍歷時,有更好的迭代特性
按照引用進行循環的時候,對數組的修改會影響循環

    $arr=['a'];
    foreach($arr as &$val){
      echo $val,'<br/>';//a b
      $arr[1]='b';
    }

數組指針相關函數
key($array):獲得當前指針所在位置的鍵名,若是不存在返回null
current($array):獲得當前指針所在位置的鍵值,若是不存在返回false
next($array):將數組指針向下移動一位,而且返回當前指針所在位置的鍵值;若是沒有,返回false
prev($array):將數組指針向上移動一位,而且返回當前指針所在位置的鍵值;若是沒有,返回false
reset($array):將數組指針移動到數組開始,而且返回當前指針所在位置的鍵值;若是沒有,返回false
end($array):將數組指針移動到數組的末尾,而且返回當前指針所在位置的鍵值;若是沒有,返回false

    $arr=[
      'a','b','c',
      35=>'test',
      'username'=>'king',
      'age'=>12
    ];
    print_r($arr);
    /*
    Array
    (
        [0] => a
        [1] => b
        [2] => c
        [35] => test
        [username] => king
        [age] => 12
    )
    */
    echo '當前指針所在位置元素的鍵名爲:',key($arr);//0
    echo '當前指針所在位置元素的鍵值爲:',current($arr);//a
    echo next($arr);//b
    echo '當前指針所在位置元素的鍵名爲:',key($arr);//1
    echo '當前指針所在位置元素的鍵值爲:',current($arr);//b
    
    echo next($arr)";//c
    echo '當前指針所在位置元素的鍵名爲:',key($arr);//2
    echo '當前指針所在位置元素的鍵值爲:',current($arr),"\n";//c
    
    echo prev($arr);//b
    echo '當前指針所在位置元素的鍵名爲:',key($arr);//1
    echo '當前指針所在位置元素的鍵值爲:',current($arr);//b
    
    echo end($arr);//12
    echo '當前指針所在位置元素的鍵名爲:',key($arr);//age
    echo '當前指針所在位置元素的鍵值爲:',current($arr);//12
    var_dump(next($arr),key($arr),current($arr));//bool(false) NULL bool(false)
    
    echo reset($arr);//a
    echo '當前指針所在位置元素的鍵名爲:',key($arr);//0
    echo '當前指針所在位置元素的鍵值爲:',current($arr);//a

循環所有輸出

    $arr=[
        'a','b','c',
        35=>'test',
        ''=>'aaa'
    ];
    while(!is_null(key($arr))){
       echo '當前指針所在位置的鍵名爲:',key($arr),"\n";
       echo '當前指針所在位置的鍵值爲:',current($arr),"\n";
       echo "\n";
       next($arr);
    }

得到擴展名

    $filename='1.txt.php.html';
    $res=explode('.',$filename);
    print_r($res);
    $ext=end($res);//指針移動到最後
    echo $ext;

list():將下標連續的從0開始的索引數組賦值給相應的變量

     $arr=['a','b','c'];
     list($var1,$var2,$var3)=$arr;
     echo $var1,$var2,$var3;//a b c

遍歷二維數組

     $arr=[
       [1,'king1',12],
       [2,'king2',22],
       [3,'king3',32]
     ];
     foreach($arr as list($id,$username,$age)){
       echo $id,'-',$username,'-',$age,"\n";
     }
    //1-king1-12
    //2-king2-22
    //3-king3-32

each($array):獲得當前指針所在位置的鍵值對,返回的是數組,包含4個部分;而且將指針向下移動一位

    $arr=[
      'a'=>'aaaa',
      'b'=>'bbbb'
    ];
     $res=each($arr);
     print_r($res);
    //Array
    //(
    //    [1] => aaaa
    //    [value] => aaaa
    //[0] => a
    //[key] => a
    //)

輸出當前指針位置的鍵值

    $arr=[
      'a'=>'aaaa',
      'b'=>'bbbb'
    ];
    echo key($arr),'-',current($arr);//a-aaaa

循環數組

    $arr=[
      'a'=>'aaaa',
      'b'=>'bbbb'
    ];
    while(list($k,$v)=each($arr)){
      echo $k,'--',$v,"\n";
    }
    //a--aaaa
    //b--bbbb

數組中全部鍵名組成字符串

    $userInfo=[
      'username'=>'king',
      'password'=>'123456',
      'email'=>'382771946@qq.com'
    ];
    $keys=join(',',array_keys($userInfo));
    print_r($keys);//username,password,email

    //數組中全部鍵值轉爲字符串
    $vals="'".join("','",array_values($userInfo))."'";
    print_r($vals);//'king','123456','382771946@qq.com'

    //拼接成sql語句: INSERT user(username,password,email) VALUES('king','123456','382771946@qq.com')
    $sql="INSERT user({$keys}) VALUES({$vals})";
    echo $sql;//INSERT user(username,password,email) VALUES('king','123456','382771946@qq.com')

in_array()

    $allowExts=['jpg','jpeg','png','gif'];
    $ext='jpg';
    var_dump(in_array($ext,$allowExts));//bool(true)

字符串轉數組並亂序

    $string='速,度,快,放,假,了';
    $arr=explode(',',$string);
    shuffle($arr);
    print_r($arr);

    //將鍵名與鍵值反轉
    $arr=array_flip($arr);
    print_r($arr);

    //返回包含隨機鍵名的數組 4個值
    $res=array_rand($arr,4);
    print_r($res);

字符串轉數組,求和

    $sum='10,20,30';
    echo array_sum(explode(',',$sum));//60

計算並返回數組的乘積

    $sum='10,20,30';
    echo array_product(explode(',',$sum));//6000

截取文件擴展名,而且檢測擴展名是否在['jpg','jpeg','gif','png']

    $allowExts=['jpg','jpeg','gif','png'];
    $filename='1.txt.php.jpg';
    $arr=explode('.',$filename);
    $ext=end($arr);
    echo $ext;//jpg
    var_dump(in_array($ext,$allowExts));//bool(true)

array_push():在最後追加數據
array_pop():刪除最後一個,並返回
array_unshift():在前面追加數據
array_shift():刪除第一個,並返回

    $arr=['a','b','c'];
    $res=array_pop($arr);
    echo $res;//c
    print_r($arr);
    //Array
    //(
    //    [0] => a
    //    [1] => b
    //)

    $arr=['a','b','c'];
    array_push($arr,'hello world',123);
    print_r($arr);
    //Array
    //(
    //    [0] => a
    //    [1] => b
    //[2] => c
    //[3] => hello world
    //[4] => 123
    //)

    $arr=['a','b','c'];
    echo array_shift($arr);//a
    print_r($arr);
    //Array
    //(
    //    [0] => b
    //    [1] => c
    //)

    $arr=['a','b','c'];
    array_unshift($arr,'d');
    print_r($arr);
    //Array
    //(
    //    [0] => d
    //    [1] => a
    //[2] => b
    //[3] => c
    //)

判斷文件類型是否合法

    $filename='1.txt.jpg';
    $allowExts=['jpg','jpeg','gif','png'];
    $arr=explode('.',$filename);
    $ext=array_pop($arr);
    if(in_array($ext,$allowExts)){
      echo '文件類型合法';
    }else{
      echo '非法文件類型';
    }

快速生成字符串

    $str1=join('',range(0,9));//string(10) "0123456789"
    $str2=join('',range('a','z'));//string(26) "abcdefghijklmnopqrstuvwxyz"
    $str3=join('',range('A','Z'));//string(26) "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

生成四位數隨機驗證碼

    $arr1=range(0,9);
    $arr2=range('a','z');
    $arr3=range('A','Z');
    $newArr=array_merge($arr1,$arr2,$arr3);
    
    $res=array_rand(array_flip($newArr),4);
    echo join('',$res);

檢測文件是否存在

    $filename="msg.txt";
    $msgs=[];
    if(file_exists($filename)){
      //讀取文件中的內容
      $string=file_get_contents($filename);
      if(strlen($string)>0){
        $msgs=unserialize($string);
      }
    }

留言功能

    //檢測用戶是否點擊了提交按鈕
    if(isset($_POST['pubMsg'])){
      $username=$_POST['username'];
      $title=strip_tags($_POST['title']);
      $content=strip_tags($_POST['content']);
      $time=time();
      //將其組成關聯數組
      $data=compact('username','title','content','time');
      array_push($msgs,$data);
      $msgs=serialize($msgs);
      if(file_put_contents($filename,$msgs)){
        echo "<script>alert('留言成功!');location.href='22-msg.php';</script>";
      }else{
        echo "<script>alert('留言失敗!');location.href='22-msg.php';</script>";
      }
    }

count()獲得數組中元素的個數

    $arr=range('a','z');
    echo count($arr);//26

     $var=123;
     echo count($var),'<br/>';//1
     $var=null;
     echo count($var),'<br/>';//0

for循環只能遍歷下標連續的索引數組

    $arr=[
        5=>'a',
        -12=>'b',
        345=>'c'
    ];//不行
    $arr=[
        'username'=>'king',
        'age'=>12
    ];//不行
     for($i=0,$count=count($arr)-1;$i<=$count;$i++){
       echo $arr[$i],'<br/>';
     }

HTML 與 PHP 混編
if舉例

    <?php if(true){ ?>
    <span>成功</span>
    <?Php }else{ ?>
    <span>失敗</span>
    <?php } ?>
相關文章
相關標籤/搜索