2013-02-19 109 views
-1

我有我想要搜索的使用值和鍵多維數組PHP多維數組這如何搜索使用AJAX

<input type="text" onkeyup="showHint(this.value)"></input> 

與此

function showHint(str) 
{ 
if (str.length==0) 
    { 
    document.getElementById("nav").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("nav").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","gethint.php?q="+str,true); 
xmlhttp.send(); 
} 

沿着我只是一個位卡在了PHP位。該陣列看起來像這樣(縮短)

Array 
(
[Modest Mouse] => Array 
    (
    [The Moon & Antarctica] => Array 
    (
    [0] => 3rd Planet 
    [1] => Gravity Rides Everything 
    [2] => Dark Centre of the Universe 
    ) 
    [The Lonesome Crowded West] => Array 
    (
    [7] => Cowboy Dan 
    [8] => Trailer Trash 
    [9] => Out of Gas 
    ) 
[The Vasco Era] => Array 
    [Lucille] => Array 
    (
    [0] => Not Stuck Here 
    [1] => For No One 
    ) 
) 
) 

我開始通過獲取查詢

$q=$_GET["q"]; 

然後,我可以做到這一點

if (strlen($q) > 0) 
    { 
    $hint=""; 
    foreach($a as $b => $c) 
     { 
     if (strtolower($q)==strtolower(substr($b,0,strlen($q)))) 
      { 
      if ($hint=="") 
       { 
       $hint=$b; 
       } 
      else 
       { 
       $hint=$hint." , ".$b; 
       } 
      } 
     } 
     } 

這可以讓我謙虛鼠標或瓦斯科時代,但沒有更深層次的東西。如果我想在輸入字段中輸入'T',我希望能夠得到'月球& Antartica','寂寞擁擠西部','Trailer Trash'和'The Vasco Era'的結果。

回答

0

您可以擁有一個函數,它接受一個變量並檢查它是否爲數組,如果它是通過數組的每個元素的數組循環。隨後,如果這些元素是數組遞歸調用回該函數,如果他們不是數組,然後運行您的比較,如上所示。

function checkForHint($var) 
{ 
    foreach ($var as $value) { 
     if(is_array($value)) 
     { 
      checkForHint($value); 
     } else { 
      // Your code here 
     } 
    } 
} 

也許是這樣的。

+0

我無法完成它的工作,但你已經把我放在正確的軌道上,我應該能夠從這裏得到它謝謝你 – clethers 2013-02-21 04:06:19