使用PHP的foreach仅将逻辑应用于数组中的某些键

时间:2013-07-16 17:21:46

标签: php arrays loops foreach

我的脚本输出一个数组:

$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';
        }
    }
}

为什么这不起作用?

5 个答案:

答案 0 :(得分:3)

这匹配所有键:

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

你可能想要:

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

或类似的东西(扩展得更好......):

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

答案 1 :(得分: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

希望这有帮助!

答案 2 :(得分:2)

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

所以试试这个:

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

因为如果钥匙确实等于'age',它仍然不会等于重量,并且告诉你你已经愚弄了。反之亦然。试试这个:

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