PHP陣列

程式裡常常會出現陣列,不管是一維、二維、多維陣列,每每遇到陣列,我總是搞不清楚什麼是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。

範例

Associative Array

關聯式陣列 結合陣列

在電腦科學中,關聯陣列(英語:Associative Array),又稱對映(Map)、字典(Dictionary)是一個抽象的資料結構,它包含著類似於(鍵,值)的有序對。一個關聯陣列中的有序對可以重複(如C++中的multimap)也可以不重複(如C++中的map)。
這種資料結構包含以下幾種常見的操作:
向關聯陣列添加配對
從關聯陣列內刪除配對
修改關聯陣列內的配對
根據已知的鍵尋找配對
  • 陣列大小無須宣告。
  • 各元素的資料型態,不一定要相同。
  • 透過索引值或字串值來存取值。

向量陣列(Actor array)

傳統程式語言(如VB,C,C##,JAVA)的陣列屬於向量陣列

  • 陣列大小事先宣告。
  • 各元素型態都一樣。
  • 透過索引值來存取值。


PHP_正規表達式

正規表達式
開頭結尾:
^:比對字串的開始位置
$:比對字串的結束位置

指定匹配次數

*:比對前一個字元0次或以上
+:比對前一個字元1次或以上
?:比對前一個字元0次或1次以上
{數字}:比對前一個字母N次(n是整數數字),ex:/{3}/,意思比對字串aaapple,中的aaa3次,可是無法比對aa,因為已經指定3次,所以只能3次。
{,數字}:比對N次以下(N是整數)
{數字,}:比對前一個字母"至少"N次(N是整數數字),ex:/{3,}/,意思可比對aaa aaaapple,中的aaaa aaa3次,只能比對該字母3次或以上。
{數字1,數字2}:比對前字母N~M次(N跟M是整數),ex:/{3,4}/,意思可比對aaa aa aaaa apple,中的aaa aaaa符合,aa apple都不符合,只能比對a 3到4次,其他多的或少的,都無法比對。

特殊符號:

\:反斜線,避開特殊字元
.:比對任何次元

特定字元:

[字母或數字]:比對括號中出現的"任何"字元,只要一個不符合就false。
    ex:[A-Z]比對大寫英文字母A-Z,反之小寫[a-z]則是比對小寫字母,[0-9]比對數字。
[^字母或數字]:比對括號內以外的字元,也就是不要比括號裡出現的字母或數字。
    ex:/[^le],表示字串中apple中,不要比對le,指比對a,p,p
/字母/:比對字串內是否含有該字母。
    ex:/m/,就是比對該字串是否含有m字母。
/字母A字母B/:比對A或B。ex:/ab/,比對字串內是否有a或b。

其他:

\b:比對英文邊界,如空格
\d:比對任一數字,如[0-9]
\D:比對任何非數字,如[^0-9]
\w:比對數字字母跟底線,如[A-Za-z0-9_]
\W:比對非數字字母跟底線,[^A-Za-Z0-9_]
\s:比對任一空白字元
\S:比對任一非空白次元
\n:比對換行符號,是否換行
\t:比對定位字元

範例:

[^A-Za-z0-9]          代表接受英文大小寫及數字以外的字串

[0-9A-Za-z]           代表英文大小寫及數字的字串

[^0-9]          代表數字以外的字串

[0-9]          代表數字的字串

[A-Za-z]            代表英文大小寫的字串

[A-Za-z0-9_]           代表大小寫英數及符號的字串

[^A-Z]           代表大寫英文字母以外的字串

[A-Z]          代表大寫英文字母的字串

{3,7}           代表三個至七個字元的字串

{5,}          代表五個以上的字串

^[A-C]{3}            開頭是大寫的英文字母且在A-C間,且有三個字元的字串    20241015