如何使用AJAX搜索PHP多维数组



我有一个多维数组,我想使用这个来搜索值和键

<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;
                }
            }
         }
      }

这可以让我了解《Modest Mouse》或《The Vasco Era》,但不会更深入。如果我在输入字段中键入"T",我希望能够得到结果"月亮&"Antartica"、"The Lonesome Crowded West"、"Trailer Trash"one_answers"The Vasco Era"。

您可以有一个函数,它接受一个变量,并检查它是否是数组,是否是数组中每个元素的数组循环。随后,如果这些元素是数组,则递归调用回该函数,如果它们不是数组,则如上所示运行比较。

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

也许是这样。

相关内容

  • 没有找到相关文章

最新更新