有没有更简单的方法来确保数组中的值等于php?

时间:2012-02-05 12:09:31

标签: php

我目前正在检查这个,

if($user['medicineStudy'] == 1 || $user['thievingStudy'] == 1 || $user['miningStudy'] == 1 || $user['barterStudy'] == 1 || $user['craftingStudy'] == 1 || $user['smithingStudy'] == 1)

但是当我添加值时我必须手动输入它们,是不是有办法搜索所有值并找出它们是否等于1?数组中有很多其他信息,但我要检查的值总是以Study结束?

3 个答案:

答案 0 :(得分:5)

$found = false;

foreach ($user as $key => $val) {
    if ($val == 1 && substr($key, -5) == 'Study') {
        $found = true;
        echo "Found a one in ".$key;
        break;
    }
}

if ($found) {
// do something
}

演示:http://codepad.org/c7WehD96

答案 1 :(得分:2)

您可以使用array_filter探测数组以获取真实条目。在您的情况下,您可以将其与preg_grep组合以过滤掉有趣的条目。虽然您需要array_intersect_key解决方法将其应用于密钥:

$true = array_filter(
   array_intersect_key($user,
   array_flip(preg_grep('/Study$/', array_keys($user))))
);
if ($true) {

答案 2 :(得分:1)

function array_search_value(&$haystack, array $keys, $needle)
{
    foreach($keys as $key)
        if($haystack[$key] == $needle) 
            return true;
    return false;
}