-1

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

<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”,我希望能够得到“月球和南极洲”、“孤独的拥挤西部”、“拖车垃圾”和“瓦斯科时代”的结果。

4

1 回答 1

0

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

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

也许是这样的。

于 2013-02-19T13:36:26.540 回答