我目前正在检查这个,
if($user['medicineStudy'] == 1 || $user['thievingStudy'] == 1 || $user['miningStudy'] == 1 || $user['barterStudy'] == 1 || $user['craftingStudy'] == 1 || $user['smithingStudy'] == 1)
但是当我添加值时我必须手动输入它们,是不是有办法搜索所有值并找出它们是否等于1?数组中有很多其他信息,但我要检查的值总是以Study
结束?
答案 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
}
答案 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;
}