【问题标题】:PHP: If condition not working inside foreach loop [closed]PHP:如果条件在 foreach 循环中不起作用[关闭]
【发布时间】:2019-03-24 15:38:51
【问题描述】:

我想使用内部有 If 语句的 PHP foreach 循环来显示数据。 If 语句应该将所有值都接受为真,但它却将某些值接受为 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”。

【问题讨论】:

  • 前两个数组条目似乎在=&gt;phone 之间有一个额外的空格...你可以试试trim($value['type']) == 'phone' 吗?
  • 您的 foreach 循环运行良好。问题出在数组本身。检查以确保没有多余的空格
  • 它显示“它是一部手机”3 次。见3v4l.org/9H4NS
  • @NiettheDarkAbsol 非常感谢!我没注意到。这就是问题所在。
  • 正如@NiettheDarkAbsol 所说 - 这是一个错字。您可以将您的代码修改为&amp;&amp; trim($value['type']) == 'phone' 或修复您的数据

标签: php loops if-statement foreach


【解决方案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>";
    }
}

也许对你有帮助。

【讨论】:

  • 谢谢!我使用了修剪功能和替换功能来确保没有空格。
【解决方案2】:

我测试了你的代码,在我的情况下工作正常,就像 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>";
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多