今天在公司處理某支程式時,發現使用 PHP 的 foreach() 可能會踩到這個陷阱(或許算是 bug ?! )。
以下這段範例程式,結果是正確的。
<?php
$arr = array();
array_push( $arr , 1 );
array_push( $arr , 2 );
array_push( $arr , 3 );
$arr['a'] = 'A';
$arr['b'] = 'B';
$arr['c'] = 'C';
foreach ( $arr as $k => $v ) {
echo "$k => $v" . PHP_EOL;
}
?>
結果:
0 => 1
1 => 2
2 => 3
a => A
b => B
c => C
但下面這段範例程式的結果就很妙了…
<?php
$arr = array();
array_push( $arr , 1 );
array_push( $arr , 2 );
array_push( $arr , 3 );
$arr['a'] = 'A';
$arr['b'] = 'B';
$arr['c'] = 'C';
foreach ( $arr as $k => $v ) {
if ( $k == 'b' ) {
echo "$k => $v" . PHP_EOL;
}
if ( $k === 'b' ) {
echo "$k ==> $v" . PHP_EOL;
}
}
?>
結果:
0 => 1
b => B
b ==> B
1 月 10 2013
[PHP] foreach() 會踩到的陷阱 ( bug ? )
今天在公司處理某支程式時,發現使用 PHP 的 foreach() 可能會踩到這個陷阱(或許算是 bug ?! )。
以下這段範例程式,結果是正確的。
結果:
但下面這段範例程式的結果就很妙了…
結果:
By Joe Horn • PHP 4 • Tags: foreach, PHP