2015-03-25 81 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'; 
} 

作品與你有任何維數組。