2011-09-26 47 views
1

我有一個遞歸的數組搜索功能,以前一直在工作的一種享受。出於某種原因,儘管現在它似乎告訴我存在於陣列中的事實實際上並不存在。爲什麼我的遞歸數組搜索不能在這個數組數據上工作?

IE瀏覽器,我有這樣的

Array 
(
[0] => Array 
    (
     [name] => people 
     [groups] => Array 
      (
       [0] => Array 
        (
         [name] => tom 
        ) 

       [1] => Array 
        (
         [name] => john 
        ) 

      ) 

    ) 

) 

我的遞歸搜索功能的陣列:

function searchArrayRecursive($needle, $haystack){ 

    foreach ($haystack as $key => $arr) { 

    if(is_array($arr)) { 

     $ret=searchArrayRecursive($needle, $arr); 

     if($ret!=-1) return $key.','.$ret; 

    } else { 

     if($arr == $needle) return (string)$key; 

    } 

    } 

    return -1; 

} 

如果我做的不過以下幾點:

$search = searchArrayRecursive('kim',$the_array); 

if($search != -1) { 

    echo 'result: found<br />'; 

} else { 

echo 'result: not found'; 

} 

我得到結果:找到 它顯然不在陣列。也許我的功能從未奏效。也許我的頭在倒退。任何意識形態?

注:我也得到結果:發現當我搜索湯姆或John o.O

+1

您發佈的代碼在我的本地計算機和[CodePad](http://codepad.org/KWwjuDjg)上工作得很好。 –

+0

和$ search實際上包含什麼? – Catalin

回答

0

爲提供此示例適用。可能你的實際數據是混合大小寫? ('john'!='John')或可能多餘的空格或一個雜散的換行符,因爲它們在創建數組時沒有被修剪?

嘗試var_dump()而不是print_r()。它應該顯示您正在嘗試搜索的數據的確切性質。我懷疑你的數據可能不符合你期望的格式。

相關問題