程式裡常常會出現陣列,不管是一維、二維、多維陣列,每每遇到陣列,我總是搞不清楚什麼是index,key,value。目前稍微懂一點,做一下筆記吧!
範例
$week=array(
'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
我們可以利用索引值來取得值,$week[0]值就是Monday。
0就是索引(index) Monday就是值(value)
while迴圈去取值
while (list ($key,$value) = each ($week)){
print $value;
//印出Monday Tuesday Wednesday Thursday Friday Saturday Sunday
}
for 迴圈去取值
for ($i = 0 ; $i < count($week); $i++){
print $week[$i];
//印出Monday Tuesday Wednesday Thursday Friday Saturday Sunday
}
foreach陣列迴圈去取值
格式:
foreach($陣列名稱 as $陣列元素變數)
{
echo $陣列元素變數;
}
foreach ($week as $key => $value){
print $value;
}
//印出Monday Tuesday Wednesday Thursday Friday Saturday Sunda
<?php
$array0 = array($row0= array(1,2),
$row1=array(3,4),
$row2=array(5,6));
$array1 = array($row3=array(7,8),
$row4=array(9,10),
$row5=array(11,12));
$array2 = array($row6=array(13,14),
$row7=array(15,16),
$row8=array(17,18));
$cubical = array($array0, $array1, $array2);
foreach ($cubical as $array)
{
foreach ($array as $row)
{
foreach ($row as $element)
{
echo $element."\t";
}
echo "|\t";
}
echo "<br>";
}
?>
印出:
結合陣列
格式:
$變數名稱["指定名稱"] = 陣列元素的值;
範例:
<?php
$array["number1"] = 1;
$array["number2"] = 2;
$array[] = 3;
foreach ($array as $element)
{
echo $element."<br>";
}
?>
陣列相關函數
函數名稱 | 說明 |
print_r($array) | 輸出陣列中每個元素索引或鍵值與元素內的值。 |
array_keys($array) | 回傳陣列中所有的索引或鍵值。 |
array_values($array) | 回傳陣列中所有元素的值。 |
current($array) | 回傳目前指標所在陣列元素的值。 |
key($array) | 回傳目前指標所在陣列元素的索引或鍵值。 |
each($array) | 回傳目前陣列元素的索引或鍵值和元素內的值,並移動自下一個元素。 |
reset($array) | 陣列指標回到第一個陣列元素。 |
end($array) | 陣列指標指到最後一個陣列元素。 |
next($array) | 陣列指標指向下一個陣列元素。 |
prev($array) | 陣列指標指向前一個陣列元素。 |
<?php
$array["a"] = 1; //新增結合陣列元素
$array[] = 2; //新增陣列元素
$array["b"] = 3; //新增結合陣列元素
$arrat[] = 4; //新增陣列元素
echo "1.\t";
print_r($array); //輸入陣列中每個元素索引或鍵值與元素的值
echo "<br>2.\t";
print_r(array_keys($array)); //輸出陣列中所有的索引或鍵值
echo "<br>3.\t";
print_rarray_values($array)); //輸出陣列中所有元素的值
echo "<br>4.\t";
echo current($array); //回傳目前指標所在陣列元素的值
echo "<br>5.\t";
echo key($array); //回傳目前指標所在元素的索引或鍵值
echo "<br>6.\t";
print_r(each($array)); //回傳目前的陣列元素的索引或鍵值和元素內
//的值,並移動自下一個元素
echo "<br>7.\t";
echo reset($array); //陣列指標回到第一個元素
echo "<br>8.\t";
echo end($array); //陣列指標回到最後一個元素
echo "<br>9.\t";
echo prev($array); //陣列指標指向前一個元素
echo "<br>10.\t";
echo next($array); //陣列指標指向下一個元素
陣列元素排序
函數使用格式 | 說明 |
sort(陣列變數名稱) | 陣列元素的值從小到大排序。 |
rsort(陣列變數名稱) | 陣列元素的值從大到小排序。 |
asort(陣列變數名稱) | 結合陣列元素的值由小到大排序。 |
arsort(陣列變數名稱) | 結合陣列元素的值由大到小排序。 |
ksort(陣列變數名稱) | 結合陣列索引或鍵值由小到大排序。 |
krsort(陣列變數名稱) | 結合陣列索引或鍵值由大到小排序。 |
sort/rsort與asort/arsort 的差別,在於sort/rsort排序時,元素的索引或鍵值並不會留下來,並從0開始重新排序,而asort/arsort則會保留對應的索引或鍵值。
陣列元素搜尋
函數使用格式 | 說明 |
in_array(數值,陣列變數名稱) | 檢查值是否在陣列元素中,傳回布林值。 |
array_search(數值,陣列變數名稱) | 檢查數值是否在陣列中,如果是,傳回鍵值,若沒有則傳回false。 |
範例: