PHP-搜索多维数组中的匹配项并返回数组键

PHP-搜索多维数组中的匹配项并返回数组键,php,search,multidimensional-array,Php,Search,Multidimensional Array,我有这个数组 Array ( [0] => Array ( [sitename] => newsite [sitelink] => link1 [tosite] => testsite [tolink] => ABCD ) [2] => Array ( [sitename] =

我有这个数组

Array
(
    [0] => Array
        (
            [sitename] => newsite
            [sitelink] => link1
            [tosite] => testsite
            [tolink] => ABCD
        )

    [2] => Array
        (
            [sitename] => newsite
            [sitelink] => link2
            [tosite] => secondsite
            [tolink] => 1234
        )

)
我需要能够在数组中搜索设置了
sitename
sitelink
link1
link2
的条目

因此,如果搜索确定设置了sitename,并且sitelink=link1,那么它将返回id 0

如果设置了搜索查找sitename,并且sitelink=link2,那么它将返回id 3

我希望创建一个类似的函数:
arraysearch('link1',$myarray)

该函数将搜索$myarray,只检查设置了sitename的条目,而不管要搜索什么,sitelink是搜索中的值。例:link1

通常,数组中有数百个条目

有没有办法做到这一点

这就是我开始测试的地方

function myfunction($array, $site,  $value)
{
   foreach($array as $key => $newarr)
   {
      if ( $newarr[$site] === $value )
         return $key;
   }
   return false;
}

echo myfunction($sites, 'sitelink', 'link1');

这种方法可以工作,但不会检查是否设置了sitename

谢谢

试试这个:

function myfunction($array, $site,  $value)
{
   foreach($array as $key => $newarr)
   {
      if ( $newarr[$site] === $value && isset( $newarr['sitename'] ) )
         return $key;
   }
   return false;
}

echo myfunction($sites, 'sitelink', 'link1');

显示您当前的代码您说在这里搜索sitename和sitelink,然后说是否设置了sitename?这是什么意思?我还没有这方面的代码,因为我不知道怎么做。。我刚刚更新了原始问题,希望能有更好的解释。使用
array\u filter
,检查回调函数中的条件。这将使您将数组缩减为匹配的元素,然后您可以获得这些元素的键。“这类方法可以工作,但它不会检查是否设置了sitename…”-因此…在调用函数之前检查是否设置了sitename似乎合乎逻辑?