2012-06-28 23 views
0

返回键我有一个这样的阵列:找到匹配的阵列和使用PHP

Array 
(
    [2] => Array 
     (
      [0] => name2 surname 
      [1] => [email protected] 
      [2] => 834502034 
      [3] => image url3 
     ) 

    [3] => Array 
     (
      [0] => name3 surname 
      [1] => [email protected] 
      [2] => 7648484886 
      [3] => image url3 
     ) 

    [0] => Array 
     (
      [0] => name0 surname 
      [1] => [email protected] 
      [2] => 56783658658 
      [3] => image url0 
     ) 

    [1] => Array 
     (
      [0] => name1 surname 
      [1] => [email protected] 
      [2] => 7648484886 
      [3] => image url1 
     ) 

) 

你会通知,某些值是相同的,并且可能仅具有在值的单个差别。

我需要找出另一个单个数组是否与子数组上的任何数组匹配并返回键。

数组我会对阵并不多层面:

Array 
      (
       [0] => name1 surname 
       [1] => [email protected] 
       [2] => 7648484886 
       [3] => image url1 
      ) 

如何才能知道如果我的单阵列主阵列中找到并返回KEY? 我曾尝试使用array_diff_uassoc和一个回调函数来返回非匹配键=>数组,我想我可以匹配两个结果的计数来查看是否有差异,但我仍然需要匹配数组的键。我正在比较的数组始终具有确切的值[0],[1],[2]和[3]。

+0

你可能想看看array_filter()函数和array_walk()函数。看到这里http://pt.php.net/manual/en/function.array-filter.php在这里http://pt.php.net/manual/en/function.array-walk.php – bodi0

回答

0

array_search会做到这一点,采取的how comparing arrays for equality works in PHP优势(这意味着每个子阵列您提供作为检索的对象必须是同一阵列中的内部项目的顺序!):

$master = array(
    array('surname', 'foo'), 
    array('surname', 'bar'), 
); 

$key = array_search(array('surname', 'baz'), $master)); 

if ($key === false) { 
    echo "not found"; 
} 
else { 
    echo "found, key is $key"; 
} 
+0

如果我明白正确的OP没有必须搜索的预定义数组。 – Leri

+1

@PLB:这就是我所理解的。但是这里没有什么需要预定义的数组来工作。 – Jon

+0

@Jon - 再一次,正是我所希望的......这就是PHP功能的一切! (请告诉我什么是OP?) – Innate

0

因为它是完全匹配的,你可以使用array_search此:

$key = array_search($array_to_find, $array_to_search_in); 
+0

也正确 - 不得不接受第一个正确的答案。感谢Emil,Jons的回答也更具说明性。 – Innate