2012-06-28 41 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