數(shù)組是一個(gè)能在單個(gè)變量中存儲(chǔ)多個(gè)值的特殊變量。
數(shù)組的英文是array,可以存入多個(gè)不同類型的數(shù)據(jù),是一個(gè)復(fù)合數(shù)據(jù)類型。
在 PHP 中,有三種類型的數(shù)組:
- 索引數(shù)組 - 帶有數(shù)字 ID 鍵的數(shù)組
- 關(guān)聯(lián)數(shù)組 - 帶有指定的鍵的數(shù)組,每個(gè)鍵關(guān)聯(lián)一個(gè)值
- 多維數(shù)組 - 包含一個(gè)或多個(gè)數(shù)組的數(shù)組
數(shù)組特點(diǎn):
- 鍵值對(duì)(key-value);
- 鍵,key,存儲(chǔ)數(shù)組中,變量的“編號(hào)”。
- 值,value,存儲(chǔ)數(shù)組中,變量的值。
- 數(shù)組中的元素可以是任意類型的數(shù)據(jù)對(duì)象。
- 索引數(shù)組,變量的“編號(hào)”是整數(shù),整數(shù)不具備一定的語義。
- 關(guān)聯(lián)數(shù)組,變量的"編號(hào)"用字符串表示,可以具備一定的語義。
輸出數(shù)組的時(shí)候不能使
echo
語句,可以使用print_r()
函數(shù)來代替。
array 函數(shù)
在 PHP 中,array()
函數(shù)用于創(chuàng)建數(shù)組:
語法:
變量 = array(變量1,變量2,...);
變量 = array(
'key1' => value1,
'key2' => value2,
...
)
-
=>
特殊的字符,在array 語言結(jié)構(gòu)
中連接key
和value
。 - PHP 中數(shù)組的key 如果是字符串就具備一定的語義,可以非常方便的了解變量的含義。
- PHP 數(shù)組中的key ,不建議使用除了整型和字符串的其他類型。
- array() 不是函數(shù),而是一種語言結(jié)構(gòu)。
索引數(shù)組
直接創(chuàng)建
$animal[]='dog';
$animal[]='wolf';
$animal[]='cat';
var_dump($animal);
array創(chuàng)建
$stu=array("hxy",'woman',18,100);
print_r($stu);
關(guān)聯(lián)數(shù)組
直接創(chuàng)建
把學(xué)生信息存儲(chǔ)在一個(gè)變量里,需要用數(shù)組來實(shí)現(xiàn)。
$stu1['name'] = 'zs';
$stu1['sex'] = 'man';
$stu1['age'] = 18;
$stu1['score'] = 88;
echo "<pre>";
print_r($stu1);
arry創(chuàng)建
$stu4 = array(
'name' => 'LSP',
'sex' => 'woman',
'age' => 19,
'score' => 90.9
);
print_r($stu4);
print_r
與echo
類似,在輸出布爾類型變量True
時(shí),打印的是1
;在輸出False
時(shí),打印什么都沒有。
多維數(shù)組
數(shù)組中的元素可以是任何類型的數(shù)據(jù)。數(shù)組中的元素也可以是數(shù)組。
<?php
$name = "zs";
$sex = 'man';
$age = 18;
$score = 100;
$people['name']=$name;
$people['sex']=$sex;
$people['age']=$age;
$people['score']=$score;
$people1['name']='zs';
$people1['sex']='man';
$people1['age']=18;
$people1['score']=100;
$stu1['name'] = 'zs';
$stu1['sex'] = 'man';
$stu1['age'] = 18;
$stu1['score'] = 88;
$stu=array("hxy",'woman',18,100);
echo "<br />";
$ns_class=array($people,$people1,$stu,$stu1);
echo "<pre>";
print_r($ns_class);
?>
元素訪問
通過key 找到數(shù)組中的元素。
echo "hxy's score is {$stu[3]}";
echo "li's age is {$stu1['age']}";
echo "zs's age is {$ns_class[0]['age']}";
元素操作
對(duì)元素的操作包括:
數(shù)組元素操作 | 說明 |
---|---|
讀取 | 通過key,捕獲數(shù)組中的value。 |
修改 | 直接賦值即可。 |
增加 | 直接賦值即可。 |
刪除 | PHP 中刪除數(shù)組中的元素意義不大,置之不理即可。 |
嘗試修改數(shù)組中的元素:
echo "hxy's score is {$ns_class[2][3]}<br />";
$ns_class[2][3] += 10;
echo "hxy's score is {$ns_class[2][3]}";
$stu1['word'] = "為往圣繼絕學(xué),為萬世開太平。";
var_dump($stu1);
數(shù)組遍歷
for 循環(huán)
使用for 循環(huán)可以遍歷數(shù)組,但是此種方法依賴于數(shù)組中key 自然數(shù)規(guī)律。
for ($i = 0; $i < count($stu1); $i++) {
echo $stu1[$i]."<br />";
}
顯然,此種方法具有局限性,只能遍歷索引數(shù)組。
foreach 語句
foreach 語法結(jié)構(gòu)提供了遍歷數(shù)組的簡(jiǎn)單方式。
foreach 這種語言結(jié)構(gòu)是專門用來遍歷數(shù)組的,foreach 是一種循環(huán),不需要額外計(jì)時(shí)器。
foreach ($variable as $key => $value) {
# code...
}
直接訪問數(shù)組的值:
foreach ($stu as $v) {
echo $v."<br />";
}
訪問鍵值對(duì):
foreach ($stu1 as $k => $v) {
echo $k. "=". $v. "<br />";
}
注意:
- foreach 是用來遍歷數(shù)組的循環(huán)語言結(jié)構(gòu),數(shù)組中多少個(gè)元素,該語言結(jié)構(gòu)就會(huì)循環(huán)執(zhí)行幾次。
- foreach 語言結(jié)構(gòu)中,臨時(shí)變量的名字可以變化,但是語言結(jié)構(gòu)不能改變。
數(shù)組相關(guān)函數(shù)
函數(shù) | 作用 |
---|---|
count() | count($value, $mode): int |
array_count_values() | array_count_values(array $array): array |
in_array() | 檢查數(shù)組中是否存在某一個(gè)元素。 此函數(shù)可以應(yīng)用于黑白名單策略。 |
array_key_exists() | |
array_search() |
預(yù)定義超全局?jǐn)?shù)組變量
PHP中預(yù)定義了幾個(gè)超級(jí)全局變量(superglobals) ,這意味著它們?cè)谝粋€(gè)腳本的全部作用域中都可用
名稱 | 作用 |
---|---|
$_GET | 通過URL 參數(shù)(又叫query string)傳遞給當(dāng)前腳本的變量的數(shù)組。 注意:該數(shù)組不僅僅對(duì)method 為 GET 的請(qǐng)求生效,而是會(huì)針對(duì)所有帶query string 的請(qǐng)求。 |
$_POST | 當(dāng)HTTP POST 請(qǐng)求的==Content-Type 是application/x-www-form-urlencoded 或multipart/form-data== 時(shí),會(huì)將變量以關(guān)聯(lián)數(shù)組形式傳入當(dāng)前腳本。 |
$GLOBALS | 關(guān)聯(lián)數(shù)組array,包含當(dāng)前腳本內(nèi)定義成全局范圍的所有變量的引用。數(shù)組的鍵就是變量的名字。 |
$_SERVER | 服務(wù)器和執(zhí)行環(huán)境信息。 |
$_FILES | 通過HTTP POST 方式上傳到當(dāng)前腳本的項(xiàng)目的數(shù)組。此數(shù)組的概況在POST 方法上傳 章節(jié)中有描述。 |
$_COOKIE | 通過HTTP Cookies 方式傳遞給當(dāng)前腳本的變量的數(shù)組。 |
$_SESSION | 當(dāng)前腳本可用 SESSION 變量的數(shù)組。更多關(guān)于如何使用的信息,參見Session 函數(shù) 文檔。 |
$_REQUEST | 默認(rèn)情況下包含了$_GET,$_POST 和$_COOKIE 的數(shù)組。 |
$_ENV | 通過環(huán)境方式傳遞給當(dāng)前腳本的變量的數(shù)組。 |
注意:
- 以上數(shù)組都是預(yù)定義,超全局的。
- 以上數(shù)組在不同的PHP 版本中有不同的表現(xiàn),但是大方向沒變。
$_GET
- 接收從瀏覽器客戶端用戶GET 方式傳遞到服務(wù)器的參數(shù)。
- GET 傳參的參數(shù)名做$_GET 數(shù)組的key,參數(shù)值作為數(shù)組的value。
- GET 傳參時(shí),直接將參數(shù)拼接到URL 中即可。
前端代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="container" style="margin-top: 20%;">
<div class="row">
<div class="col-md-8 col-md-offset-3">
<form class="form-inline" action="8.php" method="get">
<div class="form-group">
<label for="ip">IP:</label>
<input type="text" class="form-control" id="ip" placeholder="127.0.0.1" name="ipaddr">
</div>
<div class="form-group">
<label for="Port">Port:</label>
<input type="text" class="form-control" id="Port" placeholder="0-65535" name="port">
</div>
<button type="submit" class="btn btn-default">快速連接</button>
</form>
</div>
</div>
</div>
</body>
</html>
后端代碼:
<!-- 使用switch語句編寫一個(gè)程序,前端get傳參,后端根據(jù)傳參的端口號(hào)判斷具體的服務(wù)類型 -->
<?php
$ipaddr = @$_GET['ipaddr'];
$port = @$_GET['port'];
echo "接收到的IP地址為" . $ipaddr;
echo "<br />";
echo "<br />";
switch ($port) {
case 80:
echo "HTTP協(xié)議請(qǐng)求,80端口開放";
break;
case 443:
echo "HTTPS協(xié)議請(qǐng)求,443端口開放";
break;
case 20:
echo "FTP協(xié)議,數(shù)據(jù)端口開放 20";
break;
case 21:
echo "FTP協(xié)議,控制端口開放 21";
case 22:
echo "SSH協(xié)議端口開放 22";
break;
case 3306:
echo "MySQL數(shù)據(jù)庫端口開放 3306";
break;
case 27017:
echo "MongoDB數(shù)據(jù)庫端口開放 27017";
break;
case 6379:
echo "Redis數(shù)據(jù)庫端口開放 6379";
break;
case 3389:
echo "Windows遠(yuǎn)程桌面服務(wù)端口開放 3389";
break;
default:
echo "輸入的端口號(hào)不在范圍內(nèi)。。。。";
}
$_POST
- $_POST 用于接收瀏覽器客戶端用戶以POST 方式傳遞過來的參數(shù)。
- POST 傳參,參數(shù)在請(qǐng)求正文中。
前端代碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css"
integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>post request</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2" style="margin-top: 10%;">
<h3 class="text-center">form表單</h3>
<form action="1.php" method="post">
username:<input type="text" name="username" class="form-control" >
password:<input type="password" name="password" class="form-control">
<br>
<p>
<input type="submit" name="button" value="提交" class="btn btn-danger">
</p>
</form>
</div>
</div>
</div>
</body>
</html>
后端代碼:
//1.php
<?php
$username = @$_POST['username'];
$password = @$_POST['password'];
echo $username;
echo $password;
if(!$username){
echo 'Please input a username!!';
}
if(!$password){
echo ' input a password is require!!';
}
?>
$_COOKIE
為了彌補(bǔ)HTTP 協(xié)議的無狀態(tài)性,保持用戶的會(huì)話狀態(tài),需要使用Cookie 技術(shù)。
Cookie 過程:
- 用戶提交賬密
- 服務(wù)器進(jìn)行身份認(rèn)證
- 下發(fā)身份證,下發(fā)Cookie。
- 瀏覽器客戶端用戶所有的請(qǐng)求都會(huì)攜帶身份信息,攜帶Cookie 信息。
- 整體流程體現(xiàn)為,保持了HTTP 會(huì)話的狀態(tài)性。
$_REQUEST
$_REQUEST,默認(rèn)包含了$_GET,$_POST,$_COOKIE 數(shù)組中的所有變量。以上提到的三個(gè)數(shù)組,包含了瀏覽器客戶端的三大傳參方式,也稱GPC。
但是$_REQUEST 數(shù)組在接收參數(shù)的時(shí)候,會(huì)受到一個(gè)PHP 選項(xiàng)的控制。文章來源:http://www.zghlxwxcb.cn/news/detail-655270.html
$_FILES
相關(guān)參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-655270.html
變量 | 含義 |
---|---|
$_FILES[‘uploaded’] | 用來保存文件上傳信息的。 uploaded 就是文件域input 標(biāo)簽name 屬性的值。 |
$_FILES[‘uploaded’][‘name’] | 上傳文件的名字。 |
$_FILES[‘uploaded’][‘type’] | 上傳文件的類型。 |
$_FILES[‘uploaded’][‘tmp_name’] | 上傳文件存儲(chǔ)在服務(wù)器中的緩存路徑。 |
$_FILES[‘uploaded’][‘error’] | 錯(cuò)誤代碼。 |
$_FILES[‘uploaded’][‘size’] | 上傳文件的大小 |
- $_FILES 中存儲(chǔ)的與上傳文件有關(guān)的信息,不是文件本身,文件內(nèi)容在緩存路徑中。
- 正常完成文件上傳功能,需要將文件的從緩存拷貝到服務(wù)器文件系統(tǒng)中。
到了這里,關(guān)于PHP數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!