空陣列
$arr=array(); var_dump($arr);
gettype():得到變數的型別
echo gettype($arr);//array(0) {}
通過is_array():檢測變數是否為陣列
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開始
$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 //)
快速創建下標連續的索引陣列
$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 //)
手動指定步長的陣列
$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創建陣列的時候,只能寫已經存在的變數的名稱,不需要加$
$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'=>'[email protected]' ]; $keys=join(',',array_keys($userInfo)); print_r($keys);//username,password,email //陣列中所有鍵值轉為字串 $vals="'".join("','",array_values($userInfo))."'"; print_r($vals);//'king','123456','[email protected]' //拼接成sql陳述句: INSERT user(username,password,email) VALUES('king','123456','[email protected]') $sql="INSERT user({$keys}) VALUES({$vals})"; echo $sql;//INSERT user(username,password,email) VALUES('king','123456','[email protected]')
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='https://www.cnblogs.com/chenyingying0/p/22-msg.php';</script>"; }else{ echo "<script>alert('留言失敗!');location.href='https://www.cnblogs.com/chenyingying0/p/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 } ?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86728.html
標籤:PHP
上一篇:PHP自定義函式+系統函式庫
