2017-07-25 70 views
2

在控制器中驗證動態保存方法時,我想確保給定的案例只接受0和1作爲有效值。當我嘗試操作輸入表單時,將'aaa'作爲值提交時,以下內容仍然會返回true。這是爲什麼?PHP的in_array bevahior使我感到驚訝

var_dump(in_array('aaa', [0, 1])); // true, I was expecting it to return false 
+1

請查看「in_array」第三個參數的文檔。 – DCoder

+0

PHP是一種弱類型語言... – arkascha

+1

@DCoder,我知道第三個參數,但'aaa'如何在非嚴格模式下與0或1相關。 – Ben

回答

8

你需要使用「嚴格」的設置,迫使函數來檢查的類型元素,以及:

var_dump(in_array('aaa', [0, 1], true)); 

http://php.net/manual/en/function.in-array.php狀態

如果第三個參數strict被設置爲TRUE,那麼in_array() 函數也將檢查乾草堆中針的類型。

它返回true的原因是因爲一個字符串是truthy,所以是1

if("aaa"){ echo "you will see me"; } 
+1

我已添加*爲什麼*它呼應真實:) – Martijn

+0

@Martijn好點,謝謝。 – ADyson

+0

啊,好吧,加上這個信息,它是有道理的。謝謝。,+ 1A – Ben