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

PHP list() 函式用法詳解:陣列解構賦值實戰

     編輯:PHP 綜合知識

list() 基本語法與限制

list() 是語言結構,用於一次操作將數值索引陣列的值賦予多個變數。關鍵限制:

  • 陣列必須為數值索引(字串鍵無效)。
  • 索引必須從 0 開始連續,否則觸發 Notice 且對應變數得不到值。
$arr = ['Tom', '123456']; // 正確:索引 0,1
list($name, $pwd) = $arr;
echo "Welcome $name! Password: $pwd"; // Welcome Tom! Password: 123456

錯誤示範

$arr1 = ['name'=>'Tom', 'pwd'=>'123456']; // 關聯陣列
list($name, $pwd) = $arr1; // Notice: Undefined offset 0,1

$arr2 = [1=>'Tom', 2=>'123456']; // 索引從 1 開始
list($name, $pwd) = $arr2; // Notice: Undefined offset 0

進階用法:跳過元素、巢狀解構

$data = [10, 20, 30, 40];
// 跳過第 2 個元素
list($a, , $c) = $data; // $a=10, $c=30

// 巢狀 list(PHP 7.1+)
$nested = [[1,2], [3,4]];
list(list($a,$b), list($c,$d)) = $nested; // $a=1,$b=2,$c=3,$d=4

// 短陣列語法(PHP 7.1+)
[$x, $y] = [100, 200];

常見應用場景

1. 解構函式回傳的固定結構陣列

list($width, $height, $type, $attr) = getimagesize('photo.jpg');
list($year, $month, $day) = explode('-', '2024-01-15');

2. 交換變數值(無需暫存變數)

list($a, $b) = [$b, $a];

3. 迴圈中解構多維陣列

$users = [
    ['Alice', 25, 'alice@example.com'],
    ['Bob', 30, 'bob@example.com'],
];
foreach ($users as list($name, $age, $email)) {
    echo "$name ($age) <$email>\n";
}

現代替代:解構賦值語法 (PHP 7.1+)

[] 短語法更簡潔、支援鍵名指定、可與 foreach 直接搭配:

// 指定鍵名(關聯陣列也適用)
['name' => $name, 'age' => $age] = ['name'=>'Tom', 'age'=>25];

// foreach 直接解構
foreach ($users as ['name'=>$n, 'age'=>$a, 'email'=>$e]) { ... }

總結

  • list() 適合固定結構的數值索引陣列快速解構。
  • 嚴格要求索引從 0 開始連續,否則產生 Notice。
  • PHP 7.1+ 建議改用 [] 解構語法,功能更強、語法更現代。
  • 實務上常見於 getimagesize、explode、preg_match 等固定回傳格式的函式搭配。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved