Интересное поведение foreach

igor_ua

Новичок
Интересное поведение foreach

Объясните пожалуйста такое поведение foreach, как-то для меня это совершенно неочевидное поведение и пока не пойму почему именно так.
PHP:
<?php
$a = array('a' => 1, 'b' => 2, 3);  
foreach ($a as $k => $v) {     
    if ($k == 'a') {
         echo '($k == ' . $k . ') == a'."\n";
         echo $a[$k];
         echo "\n----------\n";     
    } 
}
Результат
($k == a) == a
1
----------
($k == 0) == a
3
----------
Т.е. получается, что ключ 3го элемента при выводе == 0, но при сравнении (==) его со строкой он оказывается равен ключу первого элемента "а", при сравнении с проверкой типа (===) все становится на свои места. Где собака порылась? :)

Спасибо.
 

igor_ua

Новичок
спасибо! Теперь понятно почему. Но вопрос теперь, а чего собственно они сделали
PHP:
"php" == 0 => TRUE
в чем логика?

UP. Учусь читать все комментарии ))

"php" == 0

This is true, because the string is casted interally to an integer. Any string (that does not start with a number), when casted to an integer, will be 0.
 
Сверху