2015-03-25 23 views
0

我有一个这样的数组,它可以有任意数量的“域”数组。在这个例子中,我删除了不必要的键。在嵌套的php数组中搜索值

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,这与我所需要的相反。

有关如何做到这一点的任何建议?

+2

你看过'array_search()'吗? - http://php.net/manual/fr/function.array-search.php#91365 – D4V1D 2015-03-25 10:50:47

+0

我尝试了你在该评论中链接到的代码,它工作。如果您想将此作为答案发布,我会接受它,因为您是第一个回答,并且您的解决方案能够正常工作。 – 2015-03-25 11:08:00

+1

很高兴它的工作。只要我回到我的电脑,我会尽快发布答案。 – D4V1D 2015-03-25 11:11:28

回答

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()的意见,一个被发现。

0

尝试这样:

$domains = $arr['domains']; 
foreach($domains AS $domain) 
{ 
    foreach($domain AS $internal_arr) 
    { 
     if($internal_arr['domainname'] == 'example.net') 
     { 
     $success = true; 
     } 
    } 
} 
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'; 
} 

作品与你有任何维数组。