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似乎合乎逻辑?