【CyberSecurityLearning 47】PHP 数组
目錄
數組
數組中的元素:
數組里面也可以包含數組(多維數組/二維數組)
數組的分類
數組的創建
第一種創建數組的方式
第二種創建數組的方式
數組元素的訪問
數組的遍歷
索引數組遍歷(for循環)
關聯數組遍歷(foreach)
預定義超全局數組變量(重要!)
$_GET(用來接收get方式傳遞過來的參數)★
實踐:寫一個簡單的登錄頁面
get.php代碼:
login.php代碼:
isset函數
$_POST(★)
login.php代碼
post.php代碼
$_POST上傳文件(★)
數組
是變量的一種類型(但是不是基本變量類型)
是一種復合的 數據類型
鍵值對(鍵名key ??? 鍵值value)
數組中的元素:
(除了對象,可以存放任意數據類型的數據!)數組里面也可以存放數組
<?php $name="AJEST"; $age=24; $sex=true; $grade=78.9; //把上面四個變量放到同一個變量里面去 $stu[]="AJEST";//[]實際上是一個運算符 $stu[]=24; $stu[]=true; $stu[]=78.9; //echo $stu; echo只能輸出簡單的數據類型 echo "<pre>";//pre標簽格式化輸出 //print_r($stu);//print_r是輸出一個數組 var_dump($stu); ?>?
數組里面也可以包含數組(多維數組/二維數組)
<?php $students=array(1901 => array("AJEST",24,true,79.9),1902 => array("MDM",23,false,61),1903 => array("XL",25,true,59.9) ); print_r($students); //想取得第一個學生的成績 echo $students[1901][3]; ?>?
<html><title>學生基本信息表</title><meta charset="utf-8"> </html><?php $students=array(1901 => array('name' => "GGG",'age' => 24,'esx' => true,'grade' => 79.9),1902 => array("MDM",23,false,61),1903 => array("XL",25,true,59.9) ); echo "<table border=3>"; echo "<tr><td>姓名</td><td>年齡</td><td>性別</td><td>成績</td> </tr>";foreach($students as $v){echo "<tr>";foreach($v as $vv){if($vv === true){$vv = "男";}if($vv === false){$vv = "女";}echo "<td>".$vv."</td>";}echo "</tr>"; } echo "</table>"; ?>?
數組的分類
鍵值對? ? ?整型的正數? ? ? ? ? ?? ?? 叫做索引數組
鍵值對? ? ?具有語義的字符串 ???? 叫做關聯數組
?
數組的創建
第一種創建數組的方式
$stu[]
1.在未指定鍵名的情況下,給數組賦值,鍵名從最大的開始計數,依次增大
2.可以手動給鍵名
<?php $stu[10]="AJEST";//[]實際上是一個運算符 $stu[20]=24; $stu[30]=true; $stu[]=78.9; echo "<pre>";//pre標簽格式化輸出 var_dump($stu); ?> <?php $stu['name']="AJEST";//[]實際上是一個運算符 $stu['age']=24; $stu['sex']=true; $stu['grade']=78.9; $stu[]="Content"; echo "<pre>";//pre標簽格式化輸出 //print_r($stu);//print_r是輸出一個數組 var_dump($stu); ?>第二種創建數組的方式
array()
<pre> <?php $stu1=array("AJEST",24,true,78.9);//[]實際上是一個運算符 print_r($stu1); $stu2=array('name' => "MDM",'age' => "23",'sex' => false,'grade' =>99.9,'Something like this!' ); print_r($stu2); ?>?
數組元素的訪問
1、讀取
2、添加(不要給數組中原來存在的鍵名,如果給的鍵名已存在就是修改)
3、修改
<pre> <?php $stu1=array("AJEST",24,true,78.9);//[]實際上是一個運算符 print_r($stu1); $stu2=array('name' => "MDM",'age' => "23",'sex' => false,'grade' =>99.9,'Something like this!' );echo $stu1[0];//AJEST 查詢名字 $stu1[3]=100;//成績改成100 print_r($stu1);?>數組的遍歷
for循環只適用于有規律的索引數組
foreach語言結構
索引數組遍歷(for循環)
?
<?php $stu1=array("AJEST",24,true,78.9); //count()--計算數組中的單元數目,或對象中屬性的個數 for($i=0;$i<count($stu1);$i++) {echo $stu1[$i]."<br/>"; //中括號是運算符 } ?>關聯數組遍歷(foreach)
<?php $stu1=array('name'=>"MDM",'age'=>"23",'sex'=>false,'grade'=>99.9,'something like this!' ); //foreach就是用來遍歷數組的,foreach循環每執行一次就訪問鍵值對(foreash有個自己的計數器,編程者不可見)智能 //數組中有多少個鍵值對,它就會循環幾次 foreach($stu1 as $key=>$value){ //as就相當于把數組作拆分,$key這個變量名是自己定的,這是一種語言結構echo $key." => ".$value."<br/>"; } ?>foreach是我們最重要的一種語言結構,重中之重!
預定義超全局數組變量(重要!)
php定義好了的,可以直接使用
函數內部或者外部都能使用
??? $GLOBALS
??? 引用全局作用域中可以使用的全局變量
??? $_SERVER? ?
??? 一個包含諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數組
??? $_GET?? (用來接收url傳過來的參數)
??? 通過URL參數傳遞給當前腳本的變量的數組
??? $_POST? ?
??? 當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 時,會將變量以關聯數組形式傳入當前腳本。
??? $_FILES
??? 通過HTTP POST方式上傳到當前腳本的項目的數組
??? $_COOKIE
??? 通過HTTP Cookies 的方式傳遞給當前腳本的變量的數組
??? $_SESSION
??? 當前腳本可用SESSION變量的數組
??? $_REQUEST
??? 默認情況下包含了 $_GET, $_POST 和 $_COOKIE 的數組
??? $_ENV
??? 通過環境方式傳遞給當前腳本的變量的數組
$_GET(用來接收get方式傳遞過來的參數)★
<?php var_dump($_GET); ?>接受來自的URL的傳遞參數
http://localhost/PHP/array/get.php?name=GGG(我們這么通過get方式傳遞參數?我們需要在這個腳本后面加一個問號)
http://192.168.1.132/PHP/array/get.php?name=GGG&passwd=123456(傳兩個參數需要用&來連接)
參數的名會變成鍵名
參數的值會變成鍵值
實踐:寫一個簡單的登錄頁面
get.php代碼:
<meta charset="utf-8"> <?php //是否點擊登錄按鈕 if(isset($_GET['userSubmit'])){if(isset($_GET['userName']) && $_GET['userName']=="AJEST"&& isset($_GET['userPass']) && $_GET['userPass']=="123456"){echo "welcome,".$_GET['userName'];}else{echo "用戶名或者密碼錯誤<a href='./login.html'>請重新登錄</a>";} }else{echo "登錄錯誤,請重新登錄<a href='./login.html'>請通過表單重新登錄</a>"; } ?>login.php代碼:
<html> <meta charset="utf-8"> <h1>用戶登錄</h1> # action是提交到哪個頁面(提交到當前路徑下的get.php),提交方式是GET,target="_blank"就是在新標簽頁打開 <form action="./get.php" method="get" target="_blank"> 用戶名:<input type="text" name="userName"><br /> 密碼:<input type="password" name="userPass"><br /> <input type="submit" name="userSubmit" value="登錄"> </form> </html>GET數組來接收表單提交的時候,它會把我們標簽的name屬性值作為get數組的鍵名,標簽的value會作為get數組的鍵值
isset函數
<?php var_dump(isset($_GET));//isset是判斷變量是否被定義isset,并且非 null var_dump(isset($_GET['name']));?>$_POST(★)
當 HTTP POST 請求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data(文件) 時,會將變量以關聯數組形式傳入當前腳本。
GET數據在URL里面,POST數據正在HTTP請求報文的請求正文中
接收用post方式傳過來的參數
<?php var_dump($_POST); ?>login.php代碼
enctype不寫默認就是application/x-www-form-urlencoded
寫multipart/form-data是文件
post.php代碼
<pre> <meta charset="utf-8"> <?php //var_dump($_POST); if(isset($_POST['userSubmit'])){if(isset($_POST['userName']) && $_POST['userName']=="GGG"&& isset($_POST['userPass']) && $_POST['userPass']=="123456"){echo "Welcome,".$_POST['userName'];}else{echo "用戶名或密碼錯誤<a href='./login.html'>請通過重新登錄</a>";} }else{echo "Error!<a href='./login.html'>請通過表單登錄</a>"; } ?>$_POST上傳文件(★)
$_FILES??? 通過HTTP POST方式上傳到當前腳本的項目的數組
關于上傳文件大小的上限,我們需要去修改php.ini配置文件(此處略過)
對php.ini配置文件做修改
使上傳文件后的緩存位置更改為C:\phpStudy\tmp\tmp
C:\phpStudy\tmp\tmp是更改php上傳文件路徑
重啟phpStudy(使配置文件生效)
upfile.php:
<html> <meta charset="utf-8"> <h1>文件上傳測試 </h1> <formaction=""method="post"enctype="multipart/form-data" ><input type="file" name="userUpFile"><input type="submit" name="userSubmit" value="上傳"> </form> </html> <hr /> <?php echo "<pre>"; if(isset($_POST['userSubmit'])){ //用戶是否點擊提交按鈕var_dump($_FILES); //$_FILES捕獲文件上傳信息$tmp_path=$_FILES['userUpFile']['tmp_name'];$path=__DIR__."\\".$_FILES['userUpFile']['name'];//__DIR__獲取當前php腳本所在目錄//echo $path;if(move_uploaded_file($tmp_path,$path)){ //把緩存文件移動到目標文件(緩存文件如果不移動會瞬間消失,要利用sleep函數才能看到)//move_uploaded_file(參數1,參數2);將上傳上來的緩存文件的目錄(參數1)保存到參數2目錄下echo "upfile success!";echo "<br />".$_FILES['userUpFile']['name'];}else{echo "upfile failed";} } ?>?
?
總結
以上是生活随笔為你收集整理的【CyberSecurityLearning 47】PHP 数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 边缘计算安全技术综述
- 下一篇: 作者:宋杰(1980-),男,博士,东北