iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

大二萌新的學習紀錄系列 第 10

Day 10 : PHP - 常用的陣列函數有哪些?

上篇介紹了PHP的陣列宣告、印出方式,這篇想和大家介紹PHP常用的陣列函數有哪些

1. in_array
如果想檢查此value是否存在於陣列中,可使用in_array,語法為in_array(要檢查的value , 要被檢查的陣列)

讓我們看以下範例

PHP:

$selfKey = array("Tom"=>"60", "Amy"=>"50", "Eason"=>"65", "Joker"=>"100");
$check_value = 100;
echo "檢查value是否存在於陣列中:<br>";

//in_array(要檢查的value, 要被檢查的陣列);
if (in_array($check_value, $selfKey)) {
    echo "查到value值".$check_value;
} else {
    echo "查無".$check_value."這個value值";
}

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088wJ7vlY1mZo.png


2. array_key_exists
如果想檢查此key是否存在於陣列中,可使用array_key_exists,語法為array_key_exists (要檢查的key , 要被檢查的陣列)

讓我們看以下範例

PHP:

$check_key = "Eason";
echo "檢查key值是否存在於陣列中:<br>";

//array_key_exists(要檢查的key, 要被檢查的陣列);
if (array_key_exists($check_key, $selfKey)) {
    echo "查到key值".$check_key;
} else {
    echo "查無".$check_key."這個key值";
}

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088FgiZfjycsm.png


3. array_combine
如果想結合兩個陣列,可使用array_combine形成一個新的陣列,語法為array_combine (欲做為key的陣列 , 欲做為value的陣列)
但請注意,兩者陣列元素數量必須相同!

讓我們看以下範例

PHP:

$name = array("Tom", "Amy", "Eason", "Joker");
$weight = array("60", "50", "65", "100");

echo "結合2個陣列(注意:陣列元素數量必須相同)<br>";
echo "將name和weight合併後的combine陣列為:<br>";

//array_combine(欲做為key的陣列, 欲做為value的陣列);
$combine = array_combine($name, $weight);
print_r($combine);

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088FftZy0DxjX.png


4. 陣列聚合(+)
陣列聚合和array_combine名字很相似,但完全不一樣喔!!
陣列聚合是用運算子的,所以「+的後者」會接在「+的前者」後面,形成一個新的陣列,你可以選擇再宣告一個變數儲存,也可以直接用print_r印出

讓我們看以下範例

PHP:

$array_1 = array("10" => "ten", "20" => "twenty");
$array_2 = array("100" => "one hundred", "200" => "two hundred", "300" => "three hundred");
echo "陣列聚合範例:<br>";

$array_50 = $array_1 + $array_2;
$array_60 = $array_2 + $array_1;

echo "陣列1(2筆)+陣列2(3筆):<br>";
print_r($array_50);
echo "<br><br>";

echo "陣列2(3筆)+陣列1(2筆):<br>";
print_r($array_2 + $array_1);

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/2014108866Y8G02oJQ.png


5. 陣列比對(==、===)
如果你想比對兩個陣列「key對應到的value」是否相同,可以用==去比對,若相同則回傳true,不同則回傳false
如果你想相同,且順序一樣,則可以用===去比對

讓我們看以下範例

PHP:

$array_20 = array("one thousend", "two thousend");
$array_30 = array(1 => "two thousend", 0 => "one thousend");
echo "陣列比對範例:<br>";

//$a == $b 如果兩個陣列有相同的key和value,則回傳true,否則回傳false
//$a === $b 同上,但多了一個=,代表需要順序相同,且型態也相同,才會回傳true
var_dump($array_20 == $array_30);
echo "<br><br>";

var_dump($array_20 === $array_30);
echo "<br><br>";

$array_40 = ($array_20 == $array_30);
var_dump($array_40);

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088WNuyM9c2PG.png


6. array_search
如果想搜尋此value是否在陣列裡,可使用array_search,語法為array_search (要搜尋的value, 要被搜尋的陣列)
若搜尋成功會回傳key值,否則會回傳false

讓我們看以下範例

PHP:

$array_70 = array("70" => "seventy", "80" => "eighty", "90" => "ninety");
echo "陣列搜尋範例:<br>";

//array_search(要搜尋的value值, 要被搜尋的陣列);
//搜尋成功回傳key值,否則回傳false
$searchKey = array_search("ninety", $array_70);
echo "搜尋到的key值為".$searchKey;

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088wdetXmYJLM.png


7. isset
若想檢查此變數有無設置,可使用isset($變數)

讓我們看以下範例

PHP:

$array_10 = array("10" => "ten", "20" => "twenty", "30" => "thirty");
$isset_Key = "20";
echo "用isset()檢查值有無設置:<br>";
if (isset($array_10[$isset_Key])) {
    echo $isset_Key."的value值為".$array_10[$isset_Key];
} else {
    echo "查無此人資料";
}

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088wWqp5LAOrB.png


8. empty
若想檢查此變數是否為空值,可使用empty($變數)
0空字串(“ ”)null…等都皆為空值

讓我們看以下範例

PHP:

$array_100 = array("100" => "", "200" => "two hundred", "300" => "three hundred");
$empty_Key = "100";
echo "用empty判斷是否有值:<br>";
if(empty($array_100[$empty_Key])) {
    echo "查無資料";
} else {
    echo $empty_Key."的value值為".$array_100[$empty_Key];
}

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088MTbch0qZHJ.png


9. array_intersect
若你想取兩個陣列的value「交集」,可使用array_intersect,語法為array_intersect(要檢查的陣列 , 要被比對的陣列)
因為是比對value,所以「key值不一樣」也會被視為交集

讓我們看以下範例

PHP:

$array_400 = array("400" => "four hundred", "500" => "five hundred", "600" => "six hundred", "700" => "seven hundred");
$array_700 = array("700" => "seven hundred", "800" => "four hundred", "900" => "nine hundred");

//array_intersect(要檢查的陣列, 要被比對的陣列);
$result_inrersect_1 = array_intersect($array_400, $array_700);
$result_inrersect_2 = array_intersect($array_700, $array_400);

echo "陣列交集範例<br>";
print_r($result_inrersect_1);
echo "<br><br>";
print_r($result_inrersect_2);
echo "<br><br>";

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088a0e0AcBo9v.png


10. array_diff
如果你想取兩個陣列的value「差集」,可使用array_diff,語法為array_diff(要檢查的陣列 , 要被比對的陣列)
這裡我們用上面9. array_intersect$array_400$array_700做示範

讓我們看以下範例

PHP:

//array_diff(要檢查的陣列, 要被比對的陣列);
$result_diff_1 = array_diff($array_400, $array_700);
$result_diff_2 = array_diff($array_700, $array_400);

echo "陣列差集範例<br>";
print_r($result_diff_1);
echo "<br><br>";
print_r($result_diff_2);
echo "<br><br>";

結果如下圖所示:
https://ithelp.ithome.com.tw/upload/images/20210924/20141088DnLdreW3pf.png


以上就是常用的陣列函數語法
希望大家看完能更加了解


上一篇
Day 9 : PHP - 如何宣告陣列?又該如何印出它?
下一篇
Day 11 : PHP - 如何將HTML的內容傳送到PHP?POST和GET又該如何選擇?
系列文
大二萌新的學習紀錄30

尚未有邦友留言

立即登入留言