2

想缩短这段代码

if( (in_array('2', $values)) or (in_array('5', $values)) or (in_array('6', $values)) or (in_array('8', $values)) ){
echo 'contains 2 or 5 or 6 or 8';
}

试过这个

(in_array(array('2', '5', '6', '8'), $values, true))

但据我所知,只有当所有值都存在于数组中时

请指教

4

4 回答 4

5

试试array_intersect(),例如

if (count(array_intersect($values, array('2', '5', '6', '8'))) > 0) {
    echo 'contains 2 or 5 or 6 or 8';
}

这里的例子 - http://codepad.viper-7.com/GFiLGx

于 2013-07-11T05:30:58.993 回答
1

您可以制作这样的功能:

function array_in_array($array_values, $array_check) {
  foreach($array_values as $value)
    if (in_array($value, $array_check))
      return true;
  return false;
}
于 2013-07-11T05:31:01.863 回答
1

你甚至可以省略count来缩短你的代码。

$input = array(2,3);
if (array_intersect($input, $values)) {
    echo 'contains 2 or 3';    
}
于 2013-07-11T05:34:27.993 回答
0

怎么样

$targets = array(2,5,6,8);
$isect = array_intersect($targets, $values);
if (count($isect) != 0) {
// do stuff
}
于 2013-07-11T05:31:52.093 回答