【问题标题】:Apply logic to only certain keys in array using PHP's foreach使用 PHP 的 foreach 仅将逻辑应用于数组中的某些键
【发布时间】:2013-07-16 17:21:45
【问题描述】:

我的脚本输出一个数组:

$person = array(
    'name' => 'bob',
    'age' => '27',
    'sex' => 'male',
    'weight' => 'fat'
    // ...etc.
);

有时$person 中的键没有值 - 我想检查一下。不过$person['age']$person['weight']的鸡块我就不说了,我只想检查数组中的其他键是否为空:

foreach ($person as $key => $value) {
    if ( $key != 'age' || $key != 'weight' ) {
        if ( empty($value) ) {
            echo 'you dun goofed';
        }
    }
}

为什么这不起作用?

【问题讨论】:

  • +1 供金块参考

标签: php arrays loops foreach


【解决方案1】:

这匹配所有键:

if ( $key != 'age' || $key != 'weight' )

你可能想要:

if ( $key != 'age' && $key != 'weight' )

或类似的东西(规模更好...):

if (!in_array($key, array('age', 'weight')))

【讨论】:

  • 显然我是个白痴。谢谢你。必须等待 10 分钟才能接受您的回答。
【解决方案2】:

你可能想检查它们是否都是空的:

if ( $key != 'age' && $key != 'weight' );

代码:

foreach ($person as $key => $value) {
    if ( $key != 'age' && $key != 'weight' ) 
    {
        if ( empty($value) ) 
        {
            echo "$key field is empty<br>";
        }
    }
}

键盘:http://codepad.org/hEHVru4a

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    如果表示密钥不是age 或不是weight。如果这是正确的;

    所以试试这个:

    foreach ($person as $key => $value) {
        if (!in_array($key, array('age','weight')) {
            if ($value == FALSE) {
                echo $key . ' is empty';
            }
        }
    }
    

    【讨论】:

    • X != Y || X != ZY != Z 时始终为真。
    【解决方案4】:

    您需要更改 ||到 &&。事实上,if 语句对于年龄和体重都是正确的

    【讨论】:

      【解决方案5】:

      因为如果密钥确实等于'age',它仍然不等于权重,并告诉您您没有搞错。反之亦然。试试这个:

      if ( !in_array ($key, array('age','weight')) ) {
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-08
        • 2013-02-24
        • 1970-01-01
        • 2013-04-06
        • 1970-01-01
        • 2020-01-03
        相关资源
        最近更新 更多