2014-12-05 138 views
0

我有分贝数组:搜索数组值的PHP

Array 
(
    [28] => Array 
     (
      [0] => child 
      [1] => baby 
      [2] => new d 
      [3] => christmas 
     ) 

    [29] => Array 
     (
      [0] => christmas 
     ) 

    [30] => Array 
     (
      [0] => business 
      [1] => stock 
     ) 

    [32] => Array 
     (
      [0] => apparel 
      [1] => clothing 
      [2] => contemporary apparel 
     ) 

    [49] => Array 
     (
      [0] => car rental 
      [1] => car rent 
      [2] => rent car 
      [3] => rent a car 
      [4] => car rentals 
      [5] => car1 rentals1 
     ) 
) 

我有另一个数组 搜索在上述阵列该数组值 阵列(“圣诞节”,“服饰”);

所以我想要的结果:28,29,32(这是数组的键)

+0

你尝试过什么吗? – 2014-12-05 11:30:12

回答

4

试试这个 -

$b = array("christmas","apparel"); 
$keys = array(); 
foreach ($dbArray as $key => $values) { 
    $check = array_intersect($values, $b); 
    if (!empty($check)) { 
     $keys[] = $key; 
    } 
} 
+0

如果dbArray太大意味着10000条记录,那么我循环,那么它会花费太多时间或不? – 2014-12-05 11:49:49

+0

如果有很多记录,你应该小心。我不认为(不确定)会有任何其他解决方案使用php来做到这一点,而你可以用你的查询做到这一点。 – 2014-12-05 11:53:03

+0

是的。我有这么多的数据,所以我已经移动搜索阵列。 – 2014-12-05 11:56:42

0

下面是一个递归函数来搜索多维数组的值。

function search_in_array($srchvalue, $array) 
    { 
     if (is_array($array) && count($array) > 0) 
     { 
      $foundkey = array_search($srchvalue, $array); 
      if ($foundkey === FALSE) 
      { 
       foreach ($array as $key => $value) 
       { 
        if (is_array($value) && count($value) > 0) 
        { 
         $foundkey = search_in_array($srchvalue, $value); 
         if ($foundkey != FALSE) 
          return $foundkey; 
        } 
       } 
      } 
      else 
       return $foundkey; 
     } 
    } 

它会返回你找到值的关键。 不要忘记接受答案,如果它可以帮助你