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

有没有更简单的方法来确保数组中的值等于php中的值?,php,Php,我目前正在通过这样做进行检查 if($user['medicineStudy'] == 1 || $user['thievingStudy'] == 1 || $user['miningStudy'] == 1 || $user['barterStudy'] == 1 || $user['craftingStudy'] == 1 || $user['smithingStudy'] == 1) 但当我添加值时,我必须手动键入它们,难道没有办法搜索所有值并确定它们是否等于1吗?数组中有很多其他信息

我目前正在通过这样做进行检查

if($user['medicineStudy'] == 1 || $user['thievingStudy'] == 1 || $user['miningStudy'] == 1 || $user['barterStudy'] == 1 || $user['craftingStudy'] == 1 || $user['smithingStudy'] == 1)
但当我添加值时,我必须手动键入它们,难道没有办法搜索所有值并确定它们是否等于1吗?数组中有很多其他信息,但我要检查的值总是以
研究
结尾

$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
}
演示:

演示:

您可以使用它来探测数组中的truthy条目。在您的情况下,您可以将其与筛选出感兴趣的条目相结合。尽管您需要一种变通方法来将其应用于密钥:

$true = array_filter(
   array_intersect_key($user,
   array_flip(preg_grep('/Study$/', array_keys($user))))
);
if ($true) {
您可以使用来探测数组中的truthy条目。在您的情况下,您可以将其与筛选出感兴趣的条目相结合。尽管您需要一种变通方法来将其应用于密钥:

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

@抱歉,我不明白。你是说我跑得更快?哈哈!是的,你的回答和我的一样快了一点。我把我的拿走了,因为它是复制品,而你的票数提高了。@sgermain06对不起,我不明白。你是说我跑得更快?哈哈!是的,你的回答和我的一样快了一点。我把我的拿走了,因为它是你的复制品。