PHP的數(shù)組功能很強(qiáng)大,有很多和OC或者其他語言不一樣的地方赌莺,譬如說其數(shù)組元素不限制類型抢韭,這種類似于swift的元組。以下是其相關(guān)特性:
1.數(shù)組中的元素 由鍵和值構(gòu)成,key/value
2.兩種下標(biāo)類型:①整數(shù)(索引數(shù)組) ②字符串
3.[ ]來操作下標(biāo)菇绵,也可以用{}進(jìn)行互換肄渗,建議使用[ ]來指定下標(biāo)
4.如果是關(guān)聯(lián)數(shù)組,一定要帶引號咬最,不要使用常量名稱翎嫡,處理速度較之慢8倍
數(shù)組聲明時,如果[ ]中沒有下標(biāo)永乌,往數(shù)組中添加元素是按自動增長的下標(biāo)順序來賦值
$arr = array();
for($i = 0;$i<2;$i++){
array[ ] = $i * $i;
}
echo'<pre>';//數(shù)組的最原始形態(tài)語句
print_r($arr); //array[0] = 0 ;[array[1] = 1;
echo'</pre>;
數(shù)組的自動增長下標(biāo)默認(rèn)是從0開始惑申,自動增長的出現(xiàn)過的最大值加1;
關(guān)聯(lián)數(shù)組的字符串下標(biāo)翅雏,不會影響索引下標(biāo)的排列規(guī)則圈驼;
負(fù)數(shù)也可以做下標(biāo);
$arr[ ] = 10;//下標(biāo)0
$arr[ ] = 10;//下標(biāo)1
$arr[8] = 10;//下標(biāo)8
$arr[ ] = 10;//下標(biāo)9
$arr[9] = 10;//下標(biāo)9覆蓋上一個
$arr[4] = 10;//下標(biāo)4
$arr[ ] = 18;//下標(biāo)10
$arr['one'] = 66;
$arr[ ] = 99;//下標(biāo)11
$arr[-100] = 11;//下標(biāo)-100
$arr[ ] = 20;//下標(biāo)12
數(shù)組的聲明
方式1:
$arr = array("aaa","two"=>"bbb",9=>"ccc","ddd");
方式2:php5.4以后 短數(shù)組定義語法
$arr = ["aaa","bbb",333,9=>444,555];
刪除數(shù)組中的一個元素使用unset(),下標(biāo)不會重新索引望几,需要使用array_values()函數(shù)重新索引
$arr = ["one","two","three","four"];
unset($arr[2]);//Array ( [0] => one [1] => two [3] => four )
$arr = array_values($arr);
print_r(arr);
//Array ( [0] => one [1] => two [2] => four )
多維數(shù)組可以調(diào)用方式和OC類似绩脆,不過多了一個關(guān)聯(lián)下標(biāo)的形式
$arr[1]["one"];
數(shù)組的遍歷
for循環(huán)
效率最高,但數(shù)組下標(biāo)比一定連續(xù),關(guān)聯(lián)數(shù)組無法遍歷出值
$arr = array("wp","wo","we","ew");
$num = count($arr);
for($i=0; $i < $num; $i++) {
echo $arr[i];
}
foreach
有多少元素橄抹,循環(huán)多少次
foreach ($variable as $key => $value) {
可以把鍵值都返回
}
聯(lián)合使用List(),each()和while循環(huán)
List()函數(shù)
將數(shù)組中的元素轉(zhuǎn)為變量使用
①等號左邊使用List()函數(shù)靴迫,等號右邊只能是一個數(shù)組。
②數(shù)組中有幾個元素楼誓,在list()中就用幾個參數(shù)玉锌,而且參數(shù)必須是變量(新聲明的自定義變量),不能是值
③只能將索引數(shù)組(下標(biāo)是連續(xù)的)疟羹,轉(zhuǎn)為變量主守,是從0開始
④可以在list()參數(shù)中通過,空項選擇性的接收數(shù)組中的元素
list($a, ,$c) = array("123","sp","we");
echo $a."<br>";
echo $c."<br>";
list($name,$pro) = explode("_",$str);
echo $name."<br>";
echo $pro."<br>";
each()函數(shù)
只是一個函數(shù)榄融,參數(shù)就是一個數(shù)組参淫,返回值也是一個數(shù)組
①返回的值是一個數(shù)組,數(shù)組固定有4個元素剃袍,且下標(biāo)也是固定的(1(值)Value(值)0(下標(biāo))key(下標(biāo)))
②each()只處理當(dāng)前的元素(默認(rèn)當(dāng)前元素為第一個元素黄刚,指針指向第一個)轉(zhuǎn)為數(shù)組信息后捎谨,處理完后民效,指針指向下一個元素
③如果指定已經(jīng)在結(jié)束位置了,如果再使用each()獲取元素涛救,返回false
$arr = array("one"=>"wp","wo","we");
echo '<pre>';
$one = each($arr);
print_r($one);
$one = each($arr);
print_r($one);
$one = each($arr);
print_r($one);
$one = each($arr);
var_dump($one);
echo '</pre>';
//返回結(jié)果
Array ( [1] => wp [value] => wp [0] => one [key] => one )
Array ( [1] => wo [value] => wo [0] => 0 [key] => 0 )
Array ( [1] => we [value] => we [0] => 1 [key] => 1 )
bool(false)
List()畏邢、each()、while聯(lián)合使用
$arr = ["one"=>"妹紙","wp","we","ee"];
while (list($key,$value) = each($arr)) {
echo "{$key} => {$value}<br>";
}
使用數(shù)組的內(nèi)部指針控制函數(shù)遍歷數(shù)組
next($arr);//下一個
end($arr);//最后一個
prev($arr);//前一個
reset($arr);//重置
key($arr);//獲取當(dāng)前下標(biāo)
current($arr);//獲取當(dāng)前值
超全局?jǐn)?shù)組
超全局?jǐn)?shù)組检吆,系統(tǒng)已經(jīng)聲明完的變量舒萎,可以直接使用。每個預(yù)定義數(shù)組都有自己獨(dú)特的功能蹭沛。
常用的超全局?jǐn)?shù)組
$_SERVER 服務(wù)器變量臂寝,可以獲取服務(wù)器所有的信息
$_ENV 環(huán)境變量
$_GET 接收用戶通過URL向服務(wù)器傳的參數(shù)
$_POST 接收用戶通過HTTP協(xié)議向服務(wù)器傳的參數(shù)
$GLOBALS
$_REQUEST 有安全風(fēng)險章鲤,一般不用
$_FILES 上傳文件信息
$_COOKIE
$_SESSION
$GLOBALS = array("123","wp");
function demo(){
// echo $GLOBALS.'<br>';
// print_r($GLOBALS).'<br>';
foreach ($GLOBALS as $son => $fuck) {
echo $son.$fuck.'<br>';
}
}
demo();