下標:數組中的識別名稱 也就是字串或整數在數組中的代號
數組中有幾個索引值就稱為幾維數組。
索引值:索引是將資料庫表中一列或多列的值進行排序的結構。
數組分類
在PHP數組分為兩種:
索引數組:索引(indexed)索引值為整數,以0開始,當透過位置來識別東西時用索引數組。
關聯數組:關聯(associative)關聯以字串做索引值,索引值為列名,用語存取列的資料。
數組通常用賦值的方式
一般情況下數組賦值有兩種方式:
$a[1]="dsadsadsa";
$b[2]="dsadsadsad"; array("dsads","dsadsa",321312);
一維數組:數組的索引值(下標)只有一個的時候稱為一維數組。
數組直接賦值的格式:
$數組變數名稱[索引值]=資料內容;
注意:索引值可以是字串也可以是整數 但是1與「1」是不同的 它們一個屬於整數一個屬於字串。
同名沒有給予索引值的陣列是依照順序排列的。
實例:
$a=array(1,2,3,4,5,6);
$b=array( (0=>"aaa",1=>"bbb",2=>"ccc");
$d=array("aaa",6=>"bbb","ccc");
$e=array ("name"=>"zhang", "age"=>20);
?>
二維陣列
多維數組的格式:
$a[0][]="dsadas"; []="dsadsa"; 這組是$a下的0索引值下的1和2
如果用array函數宣告格式如下:
$a=array("dsadsa","dsadas",21,array(" dsadsa","dsadas"));
數組的遍歷
foreach循環結構:
foreach 僅使用與數組的循環 ) as $key=>$value);
第一種格式遍歷給定了array_exprssion陣列。每一次循環中目前的值都被賦給我$calue,並且數組內部的指標向前移動一步。
第二種格式做同樣的事,只除了目前單元的鍵值也會在每次循環中被賦給變數 $key。
當 foreach 開始執行時,陣列內部的指標會自動指向第一個單元。另外注意foreach 所操作的是指定數組的一個拷貝,而不是該數組本身
$arr=array(10,20,30,40,50,60);
foreach($arr asv $k=>$5) {
echo "$k=>$v
";
}
輸出結果:0=>10 1=>20 2=>30 3=>40 4=>60/50 4=>60/50 4=>60/50 4=>60/5 =>整數
合併使用list(),each()與while循環
each():
$arr=array(1,2,3,4,5); print_$a=each($arr); ($a);
輸出結果:Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )
標取陣列第一位的值取數組第一位的值取值下標list():
$arr3=array("a","b","c");
list($key,$value)=each($arr .$value;
輸出結果:0 a list()可說是用一步操作給一組變數賦值 僅能用於數字索引的陣列並假定數字索引從 0 開始。
while循環
$arr=array(1,2,3,4,5,6,7,8,9,);
while(list($key,$value)=each($arr key++;
echo $key."=>".$value;
echo "
";
}輸出結果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
reset()陣列指標重新導向
在執行each() 之後,陣列指標將停留在陣列中的下一個單元或碰到陣列結尾時停留在最後一個單元。
is_array偵測變項是否為陣列真回傳ture假false
$arr=array(1,2,3,4,5,6,"saas");
while(list($k,$v)$ =
while(list($k,$v)$ = each( while(list($k,$v)$ = each( arr))
{
if(is_array($arr))
{
}
else
{
$x += $k;
}不能完全體現is_array的功能,但可以參考。
數組的指標
next():負責將指標向後移動
prve():負責將指標向前移動
end():會將指標指向陣列最後一個元素
reset():將目前指標條件移至第一個索引位置
語法格式:mixed next(陣列名稱)
$arr=(array(1,2,3,4,5));
echo end($arr);
輸出結果:5 )與current()和count()
key()的函數是讀取目前指標所指向的資料的索引值。
current()的函數則是讀取目前指標所指向資料的內容資料。
count()的函數是用來計算數組中所有元素的個數,也就是說函數會傳回目標數組的長度值。
格式:int count(陣列名稱);
key():從關聯陣列取得鍵名
$array = array('fruit1' => 'apple','fruit2'fr=> 'orange','fruit33' => 'grape','fruit4' => 'apple','fruit5' => 'apple');
while ($fruit_name = current($arra
echo key($array).'
';
)
current():傳回陣列中的目前單元
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot / $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode 'plane'; count:計算陣列中單元的數量
$arr=array(1,2,3,4,5,6);
echo count($arr);
輸出結果:6
_名全為小寫或大寫的陣列
其中包含的形態函數有兩個[CASE_UPPER]轉換為大寫,[CAS_LOWER]轉換為小寫。
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_UP_key_case($input_array, print_r(array_) [SECOND] => 4 )
array_chunk()
array_chunk()次函數會將目標陣列的資料內容,以指定索引個數,分解成數個小型陣列包含在原始陣列中。
$arr=array(1,2,3,4,5,6);
$a=array_chunk($arr,3);
print_r($a);
產出結果:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array( => 3 ) [1] => Array( => 3 ) [1] [2] => 6 ) )
也就是等於使用陣列個數的總和除以3
array_count_values
array_count_values _hamp來計算數字組中各值出現的數字次數:數字組所傳回結果值,會以原數組的內容資料作為索引,以數組的形態表現。
$arr=array(1,2,3,3,2,6);
print_r(array_count_values($arr));
輸出結果:Array ( [1] => 1
輸出結果:Array ( [1] => 1 [2]2]25] => 2 [6] => 1 )
array_fill
array_fill讓使用者自訂數值,填滿目標陣列中指定的索引區段。
語法格式:array_fill(起始索引位置,區段大小,指定字元)
其中起始索引位置與區段大小必須為integer(整數)形態數值,且區段大小指定不得為0。
$a = array_fill(5, 6, 'banana');
print_r($a);
輸出結果:Array([5] > banana[9] => banana[10] => banana)
array_filter
array_filter依序傳遞目標陣列中每個數值的使用者自訂函數。如果使用者自訂函數傳回 TRUE(真
),則 input 陣列的目前值會包含在傳回的結果陣列中。數組的鍵名保留不變。
語法格式:array_filter(目標陣列,使用者自訂函數)
function odd($var)
{
return ("a"=>1 , "b"=>2, "c"=>3, "d"=>4, "e"=>5);
print_r(array_filter($array1, "odd"));
輸出結果:Odd : Array([a] => 1[c] => 3[e] => 5)
$entry = array(0 => 'foo',1 => false,2 => => 'foo',1 => false,2 => -13, 4 => '');
print_r(array_filter($entry));
print_r(array_filter($entry));
print_r(array_filter($entry));
print_r(array_filter($entry));
產出結果Array([0] =>foo[2] => .
array_flip
array_flip將目標數組中的索引與內容值,作反相的處理,反相後的數組會以原始內容值作為索引,而索引作為資料內容.
array_flip語法格式:交換數組中的鍵和交換數組中的鍵和鍵數值
array_flip(目標陣列)
$trans = array("a" => 1, "b" => 1, "c" => $p );
輸出內容:Array([1] =>b[2] =>c)
如果同一個值出現了多次,則最後一個鍵名將作為它的值,所有其它的都丟失了。
array_sum
array_sum用來計算所有元素值在陣列中的總和。
文法格式:array_sum(目標陣列)
array_unique
array_unique用來除區目標陣列中重複的資料,運算後傳回新的數值。
array_keys與array_values
array_keys此函數將忽略原始的鍵名,並使用順序的數字重新以數組重新索引,針對關聯數組。
array_values此函數傳回一個包含數字或字串的鍵名陣列。傳回 input 數組中所有的值並給其建立數字索引。
$arr=array("a"=>1,"b"=>2,"abc",2);
$b=array_keys($arr);
$c=array_values($arr);
$c=array_values(arr); :$b=Array ( [0] => a [1] => b [2] => 0 [3] => 1 )
2] => abc [3] => 2 )
數組的檢索
對數組的檢索,且主要指對數組的鍵名或元素值進行判斷,從而確定具有與某個數組元素的存在與否。
語法格式:bool in_array(mixed $needle, array $haystack[,bool $strict]);
$arr3=array(1,2,3,"hello","wprld"); $arr3=array(1,2,3,"hello","wprld"); $arr3=array(1,2,3,"hello","wprld"); hell",$arr3,true);
var_dump($b);
$arr4=array(1,2,3,array("hello","world"));
$b=in_array($b=inhello($b ","world"),$arr4);
var_dump($b);
輸出結果:bool(false) bool(true)
數組與變量之間進行轉換函數與comp
( 數組與變數之間進行轉換函數與comp變數之間轉換。
轉換後, 數組元素的鍵名與變數名,以及元素的值與變數的值保持對應的關係。
extract這個函數用來將變數從陣列倒入目前符號表中
$info = array("user_id"=>2006001,"user_name"=>"佟香玉", "position"=>"專案經理");
extract($info);
echo $user_id;
輸出結果:2006001
compact()接受變異的參數數目。每個參數可以是一個包含變數名稱的字串或是包含變數名稱的數組,該數組中也可以包含其它單元內容為變數名稱的數組, compact() 可以遞歸處理。
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH"; compact("event", "nothing_here",$location_vars);
print_r($result);
輸出結果:Array ( [event] => SIGGRAPH [city]
array_push()函數將一個或多個元素壓入數組堆疊的末尾(入棧),並傳回入棧元素的數量。
array_pop()函數將陣列堆疊的最後一個元素彈出,並將該元素傳回。
範例array_push
$a=array("dsa","dsas","dfs","gfd");
array_push($a,"print","dfd"); 成績:Array ( [0] => dsa [1] => dsas [2] => dfs [3] => gfd [4] => dfy [5]且有示範者嘗試創造數字返回患者的樣本。最後一個單元,並將陣列 array 的長度減一。如果 array 為空(或不是陣列)將會回傳 NULL。
$a=array("dsa","dsas","dfs","gfd");
array_pop($a);
print 1] => dsas [2] => dfs )
已與對列
佇列也可以陣列的形式出現,且陣列中的第一個元素是對頭,最後是對頭。
在對尾插入元素可以使用堆疊的方法。
從佇列數組中刪除對頭元素可以使用array_shift函數,該函數將數組的第一個元互移出並作為結果返回, 同時,數組長度減1,並且其他元素向前移動一位。所有的數字鍵名將改為從零開始計數,文字鍵名將不會改變。
array_shift範例
$a=array("dsa","dsas","dfs","gfd");
$title=array_shift($a);
print_r($a); 0] => dsas [1] => dfs [2] => gfd )
可以使用array_unshift()函數在佇列陣列的開頭插入一個或多個元素,該函數傳回成功插入元素個數。
$a=array("dsa","dsas","dfs","gfd");
$title=array_unshift($a,"a",array(1,2));
print_r($a) ;
輸出結果:Array ( [0] => a [1] => Array ( [0] => 1 [1] => ) [2] => 1 [1] => ) [2] => 1 [1] => dfs [5] => gfd )
由結果可顯示 也可插入陣列
數組的排序
忽略於鍵名的陣列。 ( "3"=>"lemon", "2"=>"orange", "4"=>"banana", "1"=>"apple");
ksort($arr);
foreach ($arr ksort($arr);
foreach ($arr ksort($arr);
foreach ($arr ks $key => $val) {
echo "$key = $valn";
}
數組的計算是比較方便的。最簡單的計算是求數組內部的所有元素總和。也可以把數組當作一個集合處理,將兩個或多個數組合併,計算數組間的差集或交集等。
數組的合併 合併 並不是+
範例
$arr2=array(1,2,3);
$arr3=array(3,4,5);
print_r($a);
輸出結果:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 3 [4] => 4 [5] 計算陣列的差集
$array1 = array("a" => "green", "red", "blue", "red");
", "red");
$result = array_diff($array1, $array2);
print_r($result);
的輸出結果:Array 陣列的交集
$array1 = array("a" => "green", "red", "blue");
$ ;
$result = array_intersect($array1, $array2);
print_r($result);
輸出結果:Array ( [a]交叉點=> green [0] 建立指定範圍的陣列:
range();
移除陣列中重複的值:
array_unique();
逆序返回陣列中重複的值:
array_unique();
逆序回傳陣列中重複的值:
。 096246795jpg 的隨即數
以上就是php學習陣列課件的內容,更多相關內容請關注PHP中文網(www.php.cn)!