2011-11-01 63 views
0

我試圖做一個in_array()對數組將類似於此,in_array和多維數組

Array 
(
    [0] => Array 
     (
      [id] => 40 
      [name] => Simon E Ainley 
      [location] => Huddersfield 
      [talent] => voice over 
      [image] => ./media/uploads/headshots/width_60_249613_10150280293315435_717615434_9570480_8341358_n.jpg 
     ) 

) 

我想檢查是否有任何陣列有一個無功相匹配的['id'],是in_array()這個正確的函數?我可以在像上面那樣的多維數組上使用它嗎?

+0

可能dublicate http://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array – Naeem

回答

0

如果您正在尋找一個特定的id索引,那麼in_array()不會做你想做的事情,因爲該函數在值而不是鍵上運行。這意味着如果您正在搜索特定的ID,則即使沒有id的值,如果其他鍵恰好具有您要搜索的值,該函數也會返回true。

如果期多維數組總是隻是將是一個維數組的數組,那麼你可以做類似如下:

function find_kv_pair($array, $key, $value) { 
    foreach($array as $arr) { 
    if (is_array($arr) && 
     array_key_exists($key, $arr) && 
     $arr[$key] == $value; 
     ) { 
     return $arr; 
    } 
    } 
    return false; 
} 

你可以這樣調用它像這樣:

if (find_kv_paid($my_array, "id", 123)) !== false) { 
    // do something with the returned array 
} else { 
    // nothing found. handle the condition 
} 

如果數組有一個鍵/值對'id' => 123,那麼子陣列將返回和處理數組,否則你會得到一個錯誤,你可以相應地處理它。

該函數接受您的子陣列的陣列,並檢查每個子陣列,看它是否具有id鍵符合搜索條件的值。如果找到一個,則返回該子數組,如果沒有子數組,則返回false。修改它以返回任何你喜歡的,如果你不只是想要整個數組。

如果你的子陣列可以擁有自己的子陣列,你可以重寫的功能是遞歸的。