執行 SELECT COUNT(*) ... 等單一值查詢,回傳陣列僅含一個元素,但不知鍵名(可能是數字索引、關聯鍵),該如何優雅取值?
| 方法 | 程式碼 | 優點 | 缺點 |
|---|---|---|---|
array_values() | $val = array_values($arr)[0]; | 重新索引,保證 0 為第一元素 | 回傳仍是陣列,需額外取索引 |
current() | $val = current($arr); | 直接取得目前指標值(預設指向第一元素) | 若陣列曾被操作指標需先 reset() |
reset() | $val = reset($arr); | 將指標指回第一元素並回傳其值 | 改變陣列內部指標 |
array_shift() | $val = array_shift($arr); | 取出並移除第一元素 | 會修改原陣列 |
array_pop() | $val = array_pop($arr); | 取出並移除最後元素 | 同上,且順序不保證 |
| foreach | foreach($arr as $v) { $val=$v; break; } | 語意清晰,不改動陣列 | 稍顯冗長 |
若使用 mysql_* 擴充(已棄用),可直接用:
$result = mysql_query("SELECT COUNT(*) FROM table");
$count = mysql_result($result, 0); // 直接取第 0 列第 0 欄
現代 PDO 寫法:
$stmt = $pdo->query("SELECT COUNT(*) FROM table");
$count = $stmt->fetchColumn(); // 直接取第一欄
fetchColumn()(PDO)或 mysql_result()(舊專案)。current($arr) 或 reset($arr)。array_shift()。array_values($arr)[0],因 PHP 5.4 前不支援函式回傳陣列直接取索引。根據資料來源與後續用途選擇最適合的取值方式,能讓程式碼更簡潔、可讀性更高。