检查多维数组中是否存在多个值之一

时间:2013-09-18 08:15:50

标签: php arrays

我已经尝试过了:

<?php
function checkForOrange($farben) {
     foreach($farben as $element) {
            if(in_array('orange',$element) || in_array('Orange',$element)) {
           return $so;
      }
      return false;
}
}
$so = checkForOrange($farben);
if (!empty($so)) { echo "nothing"; }
if (isset($so)) { echo "daa"; }
?>

但即使我检查了sfefrsefdeas,它总是返回“daa”。 有人可以给我一个工作代码吗?

3 个答案:

答案 0 :(得分:3)

检查多维数组中值的存在的函数。

函数返回true或false,一般可以使用它。

function search_in_array($value, $array) {
     if(in_array($value, $array)) {
          return true;
     }
     foreach($array as $item) {
          if(is_array($item) && search_in_array($value, $item))
               return true;
     }
   return false;
}

Working example

---------编辑----------- 根据您的评论和数组的示例

function check_in_array($value, $array, $key){
 foreach($array as $item){
  if($item[$key] == $value)
  return true;
  }
 return false;
}

然后将其称为check_in_array('orange', $array, 'FacetValueName');

或者这个

check_in_array('orange', $array, 'FacetValueName') && check_in_array('Orange', $array, 'FacetValueName') && check_in_array('dark orange', $array, 'FacetValueName')

 一次检查多个值。

Working example

答案 1 :(得分:0)

这就是我的看法。假设您正在将in_array与foreached值进行比较,那么您将拥有一个多维数组。所以我基本上创建了两个2d数组。一个叫$ farben1,另一个叫$ farben2。在第一个键'fruits' => 0=> 'Apple', 1=>'Orange', 2=>'Lemon';中,而第二个键为Melon而不是橙色。所以它不包含“橙色”这个词。

如果您认为可以比较$ element的降低值是否为'orange',那么我将strtolower()分配给您的数组$元素。

<?php
function checkForOrange(array $farben) {
     foreach($farben as $element) {
         $bool[] = in_array('orange', array_map('strtolower', $element));
     }
     return in_array(TRUE, $bool);
}

$farben1['animals'] = array('cat', 'Dog', 'Lion');
$farben1['fruits'] = array('Apple', 'Orange', 'Lemon'); //contains
$farben1['flowers'] = array('Roses', 'violets');

echo !checkForOrange($farben1) ? 'nothing' : 'daaa'; // prints daaa

echo "<br /> <br />";

$farben2['animals'] = array('cat', 'Dog', 'Lion');
$farben2['fruits'] = array('Apple', 'Melon', 'Lemon'); //does not contain
$farben2['flowers'] = array('Roses', 'violets');

echo !checkForOrange($farben2) ? 'nothing' : 'daaa'; // prints Nothing

?>

答案 2 :(得分:0)

这是我用来检查多维数组中是否存在值的函数。

function is_val_exists($needle, $haystack) {
     if(in_array($needle, $haystack)) {
          return true;
     }
     foreach($haystack as $element) {
          if(is_array($element) && is_val_exists($needle, $element))
               return true;
     }
   return false;
}

您可以像以下一样使用它:

is_val_exists('your_value', $your_array);

如果your_value存在于$ your_array中,它将返回true。