首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 陣列進階操作大全:常用函數、排序、分割合併與驗證碼實作

     編輯:PHP 相關知識

PHP 陣列進階操作大全:常用函數、排序、分割合併與驗證碼實作

陣列是 PHP 中最核心、最靈活的資料結構。掌握豐富的內建函數能讓開發事半功倍。本文分類整理陣列鍵值操作、統計去重、回調處理、排序、分割合併、堆疊佇列等實戰技巧,並以「隨機驗證碼」為例示範綜合應用。

一、陣列鍵值操作函數

函數用途示例
array_values()取得所有值(重新索引)$vals = array_values($arr);
array_keys()取得所有鍵$keys = array_keys($arr);
in_array()檢查值是否存在in_array('php', $arr)
array_key_exists()檢查鍵是否存在array_key_exists('name', $arr)
array_flip()鍵值互換$flipped = array_flip($arr);
array_reverse()反轉順序(值)$rev = array_reverse($arr);

二、統計與去重

  • count($arr) / sizeof($arr):元素總數。
  • array_count_values($arr):統計每個值出現次數,回傳關聯陣列。
  • array_unique($arr):移除重複值,保留首次出現的鍵。

三、回調函數處理

1. array_filter() 過濾

<?php
$arr = ["user1"=>70, 60, 80, 78, 34, 34, 34, 56, 78, 78];
function older($var) { return $var > 60; }
$filtered = array_filter($arr, "older");
// 結果:[user1=>70, 80, 78, 78, 78] (保留原鍵)
?>

2. array_map() 映射轉換

需修改原陣列值時,回調參數需用引用 &$val:

<?php
function increment(&$val) { $val++; }
array_map("increment", $arr); // $arr 內每個值 +1
?>

四、排序函數完全對照

函數順序保留鍵依據
sort()升序否(重建索引)值
rsort()降序否值
asort()升序是值
arsort()降序是值
ksort()升序是鍵
krsort()降序是鍵
natsort()自然排序是值(如 img2.jpg < img10.jpg)
natcasesort()自然排序忽略大小寫是值
array_multisort()多陣列/多維排序視情況自訂

自然排序示範

<?php
$arr1 = $arr2 = ["img12.png", "img10.png", "img2.png", "img1.png"];
sort($arr1);      // 標準:img1.png, img10.png, img12.png, img2.png
natsort($arr2);   // 自然:img1.png, img2.png, img10.png, img12.png
?>

多維排序實戰:依標題長度排序並以長度為鍵重組

<?php
$arr = ["aaa", "bbbbbbbbb", "cc", "ddddd"];
$lens = [];
foreach ($arr as $v) $lens[] = strlen($v);
array_multisort($lens, SORT_ASC, $arr); // 依 $lens 排序 $arr
$lens = array_unique($lens); // 去重長度
$newArr = array_combine($lens, $arr); // 長度作鍵,標題作值
print_r($newArr);
/*
Array (
    [3] => aaa
    [5] => ddddd
    [2] => cc
    [9] => bbbbbbbbb
)
*/
?>

五、分割、合併、截取、堆疊佇列

函數說明
explode(',', $str)字串分割成陣列
implode('-', $arr)陣列合併成字串(別名 join())
array_slice($arr, 0, 2)截取片段(不改原陣列)
array_splice($arr, 0, 3, ['x'])裁剪並可替換(改變原陣列)
array_merge($a, $b)合併多個陣列(數字鍵重新索引,字串鍵後覆蓋前)
array_combine($keys, $vals)兩陣列合併為關聯陣列
array_intersect($a, $b)交集
array_diff($a, $b)差集(以第一個陣列為基準)
array_pop()/array_push()堆疊:尾部彈出/壓入
array_shift()/array_unshift()佇列:頭部移除/插入

六、其他實用函數

  • array_rand($arr, 3):隨機取 3 個鍵。
  • range(1, 100):快速建立範圍陣列。
  • shuffle($arr):打亂順序(原地修改)。
  • array_sum($arr):計算總和。

七、綜合實作:隨機 4 位驗證碼

<?php
// 1. 建立字元池:1-9, a-z, A-Z
$pool = array_merge(range(1, 9), range('a', 'z'), range('A', 'Z'));

// 2. 打亂
shuffle($pool);

// 3. 取前 4 個
$codeArr = array_slice($pool, 0, 4);

// 4. 合併為字串
$captcha = implode('', $codeArr);
echo $captcha; // 例:K7m2
?>

熟練運用這些函數,能將數十行迴圈邏輯壓縮為一行語意清晰的程式碼。建議收藏備查,實戰中多嘗試「函數式思維」替代手動迴圈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved