Şu fonksiyonla istediğiniz her 2 boyutlu diziyi tarayabilirsiniz:
// Searchs array if the needle is in the second level items
// When $top_key is true or (is NOT boolean and it equals to the needle), return value is the key of the first level item
// When $top_key is false, return value is the key of the second level item
function array_deep_search($needle, $array, $top_key = false)
{
foreach ($array as $key => $item)
{
if (!is_bool($top_key) && ((is_object($item) && $needle === $item->$top_key) || ($needle === $item[$top_key])))
return $key;
elseif (
is_bool($top_key)
&& (
(is_string($item) && $needle == $item)
|| (is_array($item) && ($index = array_search($needle, $item)) !== false)
)
)
return ($top_key ? $key : $index);
}
return false;
}Kullanım: // Belli bir key'e sahip elemanı arıyorken:
$array = array(
0 => array(
'id' => 3,
'title' => 'A'
),
1 => array(
'id' => 5,
'title' => 'B'
)
);
// id key'inde 5 değerine sahip dizi elemanının INDEX DEĞERİNİ döndürür
// yani aşağıdaki fonksiyon int(1) değerini döndürecektir
array_deep_search(3, $array, 'id');