检查var是否匹配数组

Pre*_*fix 0 php arrays validation

首先我知道这是一个重复的问题,在这里经常被问到,但是我已经仔细研究了这些答案,但仍然无法弄清楚我的代码有什么问题.我对PHP很新,我99%肯定这是一个非常容易/新手的事情,这就是为什么它令我感到沮丧.

这是代码:

    $validProgram = 0;
$validProgramCodes = array('ITFZ', 'ITFC', 'ITFP', 'ITFE', 'ITFL', 'ITFS',
                           'ITFF', 'ITFM', 'ITFT', 'IEME', 'ISMK', 'IPKT');

if ( isset( $_GET[ 'category' ] ) && isset( $_GET[ 'subcategory' ] )
    && $_GET[ 'category' ] != '' && $_GET[ 'subcategory' ] != '' )
{
    $selectedSchool = $_GET[ 'category' ];
    $selectedProgram = $_GET[ 'subcategory' ];
    $selectedSchool = prepString( $selectedSchool );
    $selectedProgram = prepString( $selectedProgram );

    foreach ( $validProgramCodes as $temp )
    {
        if ( $temp == $selectedProgram )
        {
            $validProgram ++;
        }
    }

    if ( $validProgram == 1 )
    {
        echo "success!";
    }
    else if ( $validProgram !== 1)
    {
        echo "failure!";
    } 
}
Run Code Online (Sandbox Code Playgroud)

}

现在......出于某种原因,无论为$ selectedProgram提供什么,验证检查都会回复失败声明.这是非常简单的代码,所以我确信这是明显的,但我想我只需要另外一双眼睛快速浏览一下.:)

感谢您的任何帮助!

Mat*_*chu 6

if ( $validProgram = 1 ) 分配的值1$validProgram.此赋值返回1,因此语句始终通过.

尝试if ( $validProgram == 1 )测试是否平等.

无论如何,看看整个块,看起来你将大量的内容压缩为单个in_array检查,完全删除foreach循环和$validProgram变量:

$selectedProgram = prepString( $selectedProgram );

if(in_array($selectedProgram, $validProgramCodes))
{
    echo "success!";
}
else
{
    echo "failure!";
}
Run Code Online (Sandbox Code Playgroud)