Есть ли более простой способ убедиться, что значение в массиве равно чем-то php?

В настоящее время я проверяю это,

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

Но по мере того, как я добавляю значения, мне приходится вручную вводить их, нет ли способа поиска всех значений и выяснения, равны ли они 1? В массиве есть много другой информации, но значения, которые я хочу проверить, всегда заканчиваются в Study ?

 $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

Вы можете использовать array_filter для array_filter массива для записей правды. В вашем случае вы можете комбинировать его с preg_grep чтобы отфильтровать интересные записи. Хотя вам понадобится array_intersect_key решение array_intersect_key чтобы применить его к ключам:

 $true = array_filter( array_intersect_key($user, array_flip(preg_grep('/Study$/', array_keys($user)))) ); if ($true) { 
 function array_search_value(&$haystack, array $keys, $needle) { foreach($keys as $key) if($haystack[$key] == $needle) return true; return false; }