使用in_array的if语句系列仅适用于最后一个

时间:2017-09-06 14:02:07

标签: php wordpress

我正在使用一系列if语句来查看值是否在数组中,如果是,则更改变量。问题是它只适用于找到的最后一个值。

我的代码是:

    $accommodation_list = array();
    $ind_apt_query = array();
    $cottage_query = array();
    $asst_living_query = array();
    $skilled_care_query = array();
    $memory_loss_query = array(); 

if(isset($_GET['accommodations'])){
        $accommodation_values = implode(', ', $_GET['accommodations']);
        $accommodation_list = explode(" ", $accommodation_values);

        if( in_array('cottage_units', $accommodation_list) ){
            $cottage_query = array(
                'key' => 'rfp_cottage_units', 
                'value' => '', 
                'compare' => '!=',
            );
        }

        if( in_array('ind_apts', $accommodation_list) ){
            $ind_apt_query = array(
                'key' => 'rfp_ind_apt', 
                'value' => '', 
                'compare' => '!=',
            );
        }

        if( in_array('asst_living', $accommodation_list) ){
            $asst_living_query = array(
                'key' => 'rfp_assist_living_units', 
                'value' => '', 
                'compare' => '!=',
            );
        }

        if( in_array('skilled_care', $accommodation_list) ){
            $skilled_care_query = array(
                'key' => 'rfp_skilled_care_beds', 
                'value' => '', 
                'compare' => '!=',
            );
        }

        if( in_array('memory_loss', $accommodation_list) ){
            $memory_loss_query = array(
                'key' => 'rfp_memory_loss_units', 
                'value' => '', 
                'compare' => '!=',
            );
        }

    }

因此,如果$ accommodation_list = Array([0] => cottage_units,[1] => asst_living,[2] => memory_loss),只会将$ memory_loss_query填充其他人($ cottage_query和$ asst_living_query)仍然是空的。

如何让它与数组中的所有值一起使用?

1 个答案:

答案 0 :(得分:2)

您在<space>上爆炸,然后在( [0] => cottage_units, [1] => asst_living, [2] => memory_loss ) 上爆炸结果,这意味着您的数组值将包含逗号:

asst_living

所以你最终将asst_living,与明显失败的in_array()进行比较。

没有必要破坏然后重建阵列,只需直接检查您对原始阵列的if (in_array('asst_living', $_GET['accommodations'])) { // ... } 电话:

& "path with spaces\script.ps1"