從 Perl 轉 PHP 的開發者常習慣用 $. 取得行號,但在 PHP 中 foreach 預設只取值。如何同時取得索引(鍵值)?
$arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
// 錯誤:只取值,無索引
foreach ($arr as $value) {
echo $value . '
';
}
// 正確:同時取得 $key(索引)與 $value
foreach ($arr as $key => $value) {
echo "索引 $key => 值 $value
";
}
索引 0 => 值 10 索引 1 => 值 20 索引 2 => 值 30 索引 3 => 值 40 索引 4 => 值 50 索引 5 => 值 60 索引 6 => 值 70 索引 7 => 值 80 索引 8 => 值 90 索引 9 => 值 100
$key => $value 中的 => 是 PHP 陣列定義與 foreach 專用的鍵值分隔符號,不是 大於等於運算子。
$user = [
'id' => 1001,
'name' => 'Alice',
'email' => 'alice@example.com',
'role' => 'admin'
];
foreach ($user as $field => $val) {
echo "$field: $val
";
}
id: 1001 name: Alice email: alice@example.com role: admin
foreach ($arr as $index => $value) {
$lineNo = $index + 1;
echo "$lineNo. $value
";
}
foreach ($arr as $v) — 僅需值時使用foreach ($arr as $k => $v) — 需要索引/鍵名時使用$k 為整數(0 起);關聯陣列 $k 為字串