代碼鏈接:http://www.mcqyy.com/RunCode/php/#id/29b4699b9f37cc352dcf1e39c7491e86
代碼:
<?php
$arr = array();
main();
array_push($arr,'2');
arrSearch($arr,'2');
arrSearch($arr,'1');
function main(){
global $arr;
array_push($arr,'1');
arrSearch($arr,'1');
}
function arrSearch($arr,$el){
echo "<hr>";
echo "arr:";
print_r($arr);
echo "<br/>";
echo $el.":";
if(array_search($el,$arr)){
echo 'yes';
}else{
echo 'no';
}
}
?>
結果是:
arr:Array ( [0] => 1 )
1:no
arr:Array ( [0] => 1 [1] => 2 )
2:yes
arr:Array ( [0] => 1 [1] => 2 )
1:no
ps:剛學php,還請大家指教。
你的問題在於對array_search的理解不正確,如果查詢存在,它返回的是序號,而不是true或false。因為你查詢的剛好是第一位的,所以返回0, 轉換成布爾值的時候,就變成false了。如果需要判斷值在不在數組中,使用in_array() - 檢查數組中是否存在某個值,如果需要判斷key,使用array_key_exists() - 檢查給定的鍵名或索引是否存在於數組中
參考array_search
array_search — 在數組中搜索給定的值,如果成功則返回相應的鍵名
關於global,參考變量范圍
在函數中聲明了全局變量 $a 和 $b 之後,對任一變量的所有引用都會指向其全局版本。對於一個函數能夠聲明的全局變量的最大個數,PHP 沒有限制。