我有一个这样的数组,可以有任意数量的“域”数组。我在这个例子中删除了不必要的密钥。
Array
(
[result] => success
[clientid] => 7
[numreturned] => 2
[domains] => Array
(
[domain] => Array
(
[0] => Array
(
[domainname] => example.net
)
[1] => Array
(
[domainname] => example.com
)
)
)
)
我需要弄清楚如何检查这个数组以查看它是否包含域名。
我正在尝试做这样的事情:
if(arrayContains("example.com")){
$success = true;
}
我已经尝试了一些我在SO上找到的解决方案,但它们似乎没有起作用。我发现的一个例子是使用了array_key_exists,这与我需要的相反。
有关如何执行此操作的任何建议吗?
答案 0 :(得分:1)
$array = array(
"result" => "success",
"clientid" => 7,
"numreturned" => 2,
"domains" => array(
"domain" => array(
0 => array(
"domainname" => "somedomain.com",
3 => array(
"domainname" => "searchdomanin.com",
),
),
1 => array(
"domainname" => "extwam",
),
)
)
);
$succes = FALSE;
$search = 'searchdomanin.com';
array_walk_recursive($array, function($key, $value) use(&$success, &$search){
if($key === $search){
$success = TRUE;
}
},
[&$key ,&$val]);
if($success){
echo 'FOUND';
}
适用于您拥有的任何维度数组。
答案 1 :(得分:1)
使用此功能可以帮助您:
<?php
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
?>
这可以在PHP文档中关于array_search()
的一条评论中找到。
答案 2 :(得分:0)
尝试这样的事情:
$domains = $arr['domains'];
foreach($domains AS $domain)
{
foreach($domain AS $internal_arr)
{
if($internal_arr['domainname'] == 'example.net')
{
$success = true;
}
}
}