php學(xué)習(xí) 數(shù)組課件第1/2頁
更新時間:2008年06月15日 12:56:49 作者:
數(shù)組是一個可以儲存一組或一系列值的變量。*
數(shù)組是一種基本的數(shù)據(jù)類型。
數(shù)組函數(shù)還可以實現(xiàn)堆棧和隊列等數(shù)據(jù)結(jié)構(gòu)。
下標(biāo):數(shù)組中的識別名稱 也就是字符串或整數(shù)在數(shù)組中的代號
數(shù)組中有幾個索引值就被稱為幾維數(shù)組。
索引值:索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。
數(shù)組分類
在PHP數(shù)組被分為兩種:
索引數(shù)組:索引(indexed)索引值是整數(shù),以0開始,當(dāng)通過位置來標(biāo)識東西時用索引數(shù)組。
關(guān)聯(lián)數(shù)組:關(guān)聯(lián)(associative)關(guān)聯(lián)以字符串做索引值,索引值為列名,用語訪問列的數(shù)據(jù)。
數(shù)組通常用賦值的方式
一般情況下數(shù)組賦值有兩種方式:
$a[1]="dsadsadsa";
$b[2]="dsadsadsad";
使用array函數(shù):
$a=array("dsads","dsadsa",321312);
一維數(shù)組:數(shù)組的索引值(下標(biāo))只有一個的時候稱之為一維數(shù)組。
數(shù)組直接賦值的格式:
$數(shù)組變量名[索引值]=資料內(nèi)容;
注意:索引值可以是字符串也可以是整數(shù) 但是1與“1”是不同的 它們一個屬于整數(shù)一個屬于字符串。
同名沒有給予索引值的數(shù)組是按照順序排列的。
實例:
<?php
$a=array(1,2,3,4,5,6);
$b=array("one", "two", "three");
$c=array(0=>"aaa",1=>"bbb",2=>"ccc");
$d=array("aaa",6=>"bbb","ccc");
$e=array("name"=>"zhang", "age"=>20);
?>
二維數(shù)組
多維數(shù)組的格式:
$a[0][]="dsadas";
$a[0][]="dsadsa"; 這組是$a下的0索引值下的1和2
如果用array函數(shù)聲明格式如下:
$a=array("dsadsa","dsadas",21,array("dsadsa","dsadas"));
數(shù)組的遍歷
foreach循環(huán)結(jié)構(gòu):
foreach 僅用與數(shù)組的循環(huán) 兩種格式
foreach(array_exprssion(數(shù)組表達(dá)) as $value);
foreach(array_exprssion(數(shù)組表達(dá)) as $key=>$value);
第一種格式遍歷給定了array_exprssion數(shù)組。每一次循環(huán)中當(dāng)前的值都被賦給我$calue,并且數(shù)組內(nèi)部的指針向前移動一步。
第二種格式做同樣的事,只除了當(dāng)前單元的鍵值也會在每次循環(huán)中被賦給變量 $key。
當(dāng) foreach 開始執(zhí)行時,數(shù)組內(nèi)部的指針會自動指向第一個單元。此外注意foreach 所操作的是指定數(shù)組的一個拷貝,而不是該數(shù)組本身
$arr=array(10,20,30,40,50,60);
foreach($arr as $k=>$v){
echo "$k=>$v<br>";
}
輸出結(jié)果:0=>10 1=>20 2=>30 3=>40 4=>50 5=>60//下標(biāo)=>整數(shù)
聯(lián)合使用list(),each()和while循環(huán)
each():
$arr=array(1,2,3,4,5);
$a=each($arr);
print_r($a);
輸出結(jié)果:Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )
拿取數(shù)組第一位的值value 下標(biāo)key
list():
$arr3=array("a","b","c");
list($key,$value)=each($arr3);
echo $key."<br>".$value;
輸出結(jié)果:0 a list()可以說是用一步操作給一組變量賦值 僅能用于數(shù)字索引的數(shù)組并假定數(shù)字索引從 0 開始。
while循環(huán)
$arr=array(1,2,3,4,5,6,7,8,9,);
while(list($key,$value)=each($arr)){
$key++;
echo $key."=>".$value;
echo "<br>";
}
echo "<br>";
輸出結(jié)果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
reset()數(shù)組指針重定向
在執(zhí)行 each() 之后,數(shù)組指針將停留在數(shù)組中的下一個單元或者當(dāng)碰到數(shù)組結(jié)尾時停留在最后一個單元。
is_array檢測變量是否為數(shù)組真返回ture假false
$arr=array(1,2,3,4,5,6,"saas");
while(list($k,$v) = each($arr))
{
if(is_array($arr))
{
$x += $v;
echo $x;
}
else
{
$x += $k;
}
}
這個范例不能完全體現(xiàn)is_array的功能,但是可以參考。
數(shù)組的指針
next():負(fù)責(zé)將指針向后移動
prve():負(fù)責(zé)將指針向前移動
end():會將指針指向數(shù)組最后一個元素
reset():將目前指針無條件移至第一個索引位置
語法格式:mixed next(數(shù)組名稱)
$arr=(array(1,2,3,4,5));
echo end($arr);
輸出結(jié)果:5
key()與current()和count()
key()的函數(shù)是讀取目前指針?biāo)赶虻馁Y料的索引值。
current()的函數(shù)則是讀取目前指針?biāo)赶蛸Y料的內(nèi)容資料。
count()的函數(shù)是用來計算數(shù)組中所有元素的個數(shù),也就是說函數(shù)會傳回目標(biāo)數(shù)組的長度值。
格式:int count(數(shù)組名稱);
key():從關(guān)聯(lián)數(shù)組中取得鍵名
$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple');
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array).'<br />';
}
next($array);
}
輸出結(jié)果:fruit1,fruit4,fruit5
current():返回數(shù)組中的當(dāng)前單元
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport); // $mode = 'foot';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';
注意看范例 返回數(shù)組中的當(dāng)前單元
count():計算數(shù)組中單元的個數(shù)
$arr=array(1,2,3,4,5,6);
echo count($arr);
輸出結(jié)果:6
array_change_key_case()
array_change_key_case返回字符串鍵名全為小寫或者大寫的數(shù)組
其中包含的形態(tài)函數(shù)有兩個[CASE_UPPER]轉(zhuǎn)換為大寫,[CAS_LOWER]轉(zhuǎn)換為小寫。
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
輸出結(jié)果:Array ( [FIRST] => 1 [SECOND] => 4 )
array_chunk()
array_chunk()次函數(shù)會將目標(biāo)數(shù)組的資料內(nèi)容,以指定索引個數(shù),分解成數(shù)個小型數(shù)組包含在原數(shù)組中。
$arr=array(1,2,3,4,5,6);
$a=array_chunk($arr,3);
print_r($a);
輸出結(jié)果:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )
也就是等于用數(shù)組單元個數(shù)的總和除以3
array_count_values
array_count_values 用來計算目標(biāo)數(shù)組中各值出現(xiàn)的次數(shù)
語法格式:array_count_values(目標(biāo)數(shù)組)
此函數(shù)所傳回結(jié)果值,會以原數(shù)組的內(nèi)容資料作為索引,以數(shù)組的形態(tài)表現(xiàn)。
$arr=array(1,2,3,3,2,6);
print_r(array_count_values($arr));
輸出結(jié)果:Array ( [1] => 1 [2] => 2 [3] => 2 [6] => 1 )
數(shù)組中有幾個索引值就被稱為幾維數(shù)組。
索引值:索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。
數(shù)組分類
在PHP數(shù)組被分為兩種:
索引數(shù)組:索引(indexed)索引值是整數(shù),以0開始,當(dāng)通過位置來標(biāo)識東西時用索引數(shù)組。
關(guān)聯(lián)數(shù)組:關(guān)聯(lián)(associative)關(guān)聯(lián)以字符串做索引值,索引值為列名,用語訪問列的數(shù)據(jù)。
數(shù)組通常用賦值的方式
一般情況下數(shù)組賦值有兩種方式:
$a[1]="dsadsadsa";
$b[2]="dsadsadsad";
使用array函數(shù):
$a=array("dsads","dsadsa",321312);
一維數(shù)組:數(shù)組的索引值(下標(biāo))只有一個的時候稱之為一維數(shù)組。
數(shù)組直接賦值的格式:
$數(shù)組變量名[索引值]=資料內(nèi)容;
注意:索引值可以是字符串也可以是整數(shù) 但是1與“1”是不同的 它們一個屬于整數(shù)一個屬于字符串。
同名沒有給予索引值的數(shù)組是按照順序排列的。
實例:
<?php
$a=array(1,2,3,4,5,6);
$b=array("one", "two", "three");
$c=array(0=>"aaa",1=>"bbb",2=>"ccc");
$d=array("aaa",6=>"bbb","ccc");
$e=array("name"=>"zhang", "age"=>20);
?>
二維數(shù)組
多維數(shù)組的格式:
$a[0][]="dsadas";
$a[0][]="dsadsa"; 這組是$a下的0索引值下的1和2
如果用array函數(shù)聲明格式如下:
$a=array("dsadsa","dsadas",21,array("dsadsa","dsadas"));
數(shù)組的遍歷
foreach循環(huán)結(jié)構(gòu):
foreach 僅用與數(shù)組的循環(huán) 兩種格式
foreach(array_exprssion(數(shù)組表達(dá)) as $value);
foreach(array_exprssion(數(shù)組表達(dá)) as $key=>$value);
第一種格式遍歷給定了array_exprssion數(shù)組。每一次循環(huán)中當(dāng)前的值都被賦給我$calue,并且數(shù)組內(nèi)部的指針向前移動一步。
第二種格式做同樣的事,只除了當(dāng)前單元的鍵值也會在每次循環(huán)中被賦給變量 $key。
當(dāng) foreach 開始執(zhí)行時,數(shù)組內(nèi)部的指針會自動指向第一個單元。此外注意foreach 所操作的是指定數(shù)組的一個拷貝,而不是該數(shù)組本身
$arr=array(10,20,30,40,50,60);
foreach($arr as $k=>$v){
echo "$k=>$v<br>";
}
輸出結(jié)果:0=>10 1=>20 2=>30 3=>40 4=>50 5=>60//下標(biāo)=>整數(shù)
聯(lián)合使用list(),each()和while循環(huán)
each():
$arr=array(1,2,3,4,5);
$a=each($arr);
print_r($a);
輸出結(jié)果:Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )
拿取數(shù)組第一位的值value 下標(biāo)key
list():
$arr3=array("a","b","c");
list($key,$value)=each($arr3);
echo $key."<br>".$value;
輸出結(jié)果:0 a list()可以說是用一步操作給一組變量賦值 僅能用于數(shù)字索引的數(shù)組并假定數(shù)字索引從 0 開始。
while循環(huán)
$arr=array(1,2,3,4,5,6,7,8,9,);
while(list($key,$value)=each($arr)){
$key++;
echo $key."=>".$value;
echo "<br>";
}
echo "<br>";
輸出結(jié)果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
reset()數(shù)組指針重定向
在執(zhí)行 each() 之后,數(shù)組指針將停留在數(shù)組中的下一個單元或者當(dāng)碰到數(shù)組結(jié)尾時停留在最后一個單元。
is_array檢測變量是否為數(shù)組真返回ture假false
$arr=array(1,2,3,4,5,6,"saas");
while(list($k,$v) = each($arr))
{
if(is_array($arr))
{
$x += $v;
echo $x;
}
else
{
$x += $k;
}
}
這個范例不能完全體現(xiàn)is_array的功能,但是可以參考。
數(shù)組的指針
next():負(fù)責(zé)將指針向后移動
prve():負(fù)責(zé)將指針向前移動
end():會將指針指向數(shù)組最后一個元素
reset():將目前指針無條件移至第一個索引位置
語法格式:mixed next(數(shù)組名稱)
$arr=(array(1,2,3,4,5));
echo end($arr);
輸出結(jié)果:5
key()與current()和count()
key()的函數(shù)是讀取目前指針?biāo)赶虻馁Y料的索引值。
current()的函數(shù)則是讀取目前指針?biāo)赶蛸Y料的內(nèi)容資料。
count()的函數(shù)是用來計算數(shù)組中所有元素的個數(shù),也就是說函數(shù)會傳回目標(biāo)數(shù)組的長度值。
格式:int count(數(shù)組名稱);
key():從關(guān)聯(lián)數(shù)組中取得鍵名
$array = array('fruit1' => 'apple','fruit2' => 'orange','fruit3' => 'grape','fruit4' => 'apple','fruit5' => 'apple');
while ($fruit_name = current($array)) {
if ($fruit_name == 'apple') {
echo key($array).'<br />';
}
next($array);
}
輸出結(jié)果:fruit1,fruit4,fruit5
current():返回數(shù)組中的當(dāng)前單元
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport); // $mode = 'foot';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';
注意看范例 返回數(shù)組中的當(dāng)前單元
count():計算數(shù)組中單元的個數(shù)
$arr=array(1,2,3,4,5,6);
echo count($arr);
輸出結(jié)果:6
array_change_key_case()
array_change_key_case返回字符串鍵名全為小寫或者大寫的數(shù)組
其中包含的形態(tài)函數(shù)有兩個[CASE_UPPER]轉(zhuǎn)換為大寫,[CAS_LOWER]轉(zhuǎn)換為小寫。
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
輸出結(jié)果:Array ( [FIRST] => 1 [SECOND] => 4 )
array_chunk()
array_chunk()次函數(shù)會將目標(biāo)數(shù)組的資料內(nèi)容,以指定索引個數(shù),分解成數(shù)個小型數(shù)組包含在原數(shù)組中。
$arr=array(1,2,3,4,5,6);
$a=array_chunk($arr,3);
print_r($a);
輸出結(jié)果:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )
也就是等于用數(shù)組單元個數(shù)的總和除以3
array_count_values
array_count_values 用來計算目標(biāo)數(shù)組中各值出現(xiàn)的次數(shù)
語法格式:array_count_values(目標(biāo)數(shù)組)
此函數(shù)所傳回結(jié)果值,會以原數(shù)組的內(nèi)容資料作為索引,以數(shù)組的形態(tài)表現(xiàn)。
$arr=array(1,2,3,3,2,6);
print_r(array_count_values($arr));
輸出結(jié)果:Array ( [1] => 1 [2] => 2 [3] => 2 [6] => 1 )
相關(guān)文章
php代碼優(yōu)化及php相關(guān)問題總結(jié)
php代碼優(yōu)化及php相關(guān)問題總結(jié)...2006-10-10一步一步學(xué)習(xí)PHP(1) php開發(fā)環(huán)境配置
看著PHP已經(jīng)成為最熱門的Web編程語言,自己的心里也開始癢癢了,好吧,那就從今天開始學(xué)習(xí)下PHP。2010-02-02