var_dump(in_array(0, array('s' ));
這句話的結果是bool(true)。
因為in_array會將0 和's' 進行比較,0是number類型,'s'是string類型,根據php教程 manual 中“comparison operators” 一章的說明可知,number 和string進行
比較的時候,會先將string類型首先轉化為number,然後再進行比較操作。 's'轉化為number的結果為0,而0 == 0 的結果是true,所以in_array(0, array('s', 'ss'))的結果也是true
如果把in_array 的第三個參數strict設置為 true,比較的時候 就會判斷值和類型是否都相當。如果都相當的話,才會返回true,否則返回false.
關於php in_array語法
bool in_array ( mixed $needle , array $haystack [, bool $strict ] ) 返回值為直或假
<?php $a = array('1.10', 12.4, 1.13); if (in_array('12.4', $a, true)) { echo "'12.4' found with strict checkn"; } if (in_array(1.13, $a, true)) { echo "1.13 found with strict checkn"; } ?>