PHP:如果条件在foreach循环内不起作用

时间:2019-03-24 15:38:52

标签: php loops if-statement foreach

我想使用内部有If陈述的PHP foreach循环显示数据。如果If语句应接受所有值为true,则接受某些值为TRUE。

打印$ phone_array:

[0] => Array
    (
        [phone_number] => (011) 5290-0314
        [type] =>  phone
    )

[1] => Array
    (
        [phone_number] => (011) 4711-6948
        [type] =>  phone
    )

[2] => Array
    (
        [phone_number] => (011) 4794-9490
        [type] => phone
    )

foreach循环内的if语句:

foreach($phone_array as $value){
    if(isset($value['type']) && $value['type'] == 'phone'){
        echo "Its a phone<br>";
    }
    elseif(isset($value['type']) && $value['type'] == 'mobile'){
        echo "Its a mobile phone<br>";
    }
}

此代码在应显示3次时仅显示一次“ Its a phone”。

2 个答案:

答案 0 :(得分:1)

似乎数组值上有空格,因此请尝试在比较之前删除空格。

foreach($phone_array as $value){
    if(isset($value['type']) && trim($value['type']) == 'phone'){
        echo "Its a phone<br>";
    }
    elseif(isset($value['type']) && trim($value['type']) == 'mobile'){
        echo "Its a mobile phone<br>";
    }
}

这可能会对您有所帮助。

答案 1 :(得分:0)

我测试了您的代码,并且在我的情况下工作正常,就像Festus Yuma发布的那样,它可能是您的数组声明。我分享了我的代码,您会发现一个额外的选择条件:

$phone_array = array(
    0 => Array(
    'phone_number' => '(011) 5290-0314',
    'type' =>  'phone'
    ),

    1 => Array(
    'phone_number' => '(011) 4711-6948',
    'type' =>  'phone'
    ),

    2 => Array(
    'phone_number' => '(011) 4794-9490',
    'type' => 'phone'
    )
);

foreach($phone_array as $value) {
    # 1 Option

    if($value['type']) {
        if($value['type'] == 'phone') {
            echo "Its a phone<br>";
        } else if($value['type'] == 'mobile') {
            echo "Its a mobile phone<br>";
        }
    } 

    # 2 Option

    if(isset($value['type']) && $value['type'] == 'phone'){
        echo "Its a phone<br>";
    }
    elseif(isset($value['type']) && $value['type'] == 'mobile'){
        echo "Its a mobile phone<br>";
    }
}