代码之家  ›  专栏  ›  技术社区  ›  Ben

PHP的in_数组bevahior让我惊讶[重复]

php
  •  3
  • Ben  · 技术社区  · 7 年前

    在验证控制器中的动态保存方法时,我想确保给定的情况只接受0和1作为有效值。当我试图操作输入表单时,将“aaa”作为值提交,下面仍然返回true。为什么?

    var_dump(in_array('aaa', [0, 1])); // true, I was expecting it to return false
    
    1 回复  |  直到 7 年前
        1
  •  11
  •   Martijn    7 年前

    您需要使用“严格”设置,以强制函数检查元素的类型:

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

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

    如果第三个参数strict设置为TRUE,则in_数组()

    它返回true的原因是因为字符串是truthy,因此也是truthy 1 .

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