无法理解这行代码

时间:2016-04-17 18:47:20

标签: php ajax

  // lookup all hints from array if $q is different from "" 
   if ($q !== "") {
    $q = strtolower($q);
     $len=strlen($q);
    foreach($a as $name) {
      if (stristr($q, substr($name, 0, $len))) {
          if ($hint === "") {
            $hint = $name;
          } else {
            $hint .= ", $name";
        }
      }
   }
 }

完整的内容位于:http://www.w3schools.com/ajax/ajax_php.asp

我不太了解foreach和under的部分,但包括ajax在内的所有其他内容都是可以理解的。有人可以解释主要是

      if (stristr($q, substr($name, 0, $len))) {

这是唯一真正的问题,我不明白。究竟是这行怎么做:)谢谢

由于

3 个答案:

答案 0 :(得分:1)

如果$ q包含0到$ q长度的字符串$ name长度,则执行IF块。 例如,如果$ q =“hello world”和$ name =“hello”则执行IF。 如果$ q =“hello world”和$ name =“world”则if未执行。

答案 1 :(得分:1)

$ len变量来自您的请求长度。

如果你的请求是Hege len将是4;

$ name是其中一个数组值。

substr函数获取带有查询长度的数组元素。

例如在我们的例子中我们的查询长度为4.第二个数组元素是来自substr函数的Brittany我们将只得到英国stristr函数将检查Hege和Brti是否相等。

答案 2 :(得分:1)

此处代码以

开头

foreach($ a as $ name)

- >这将把$ a array中存储的所有名称循环为$ name。

- >然后是substr($ name,0,$ len)。

其中$ len是查询字符串参数的长度。

所以,最后substr($ name,0,$ len)只返回从0开始存储的名称数组到查询字符串长度的字符串部分。

之后的stristr函数。

将在您使用substr函数存储的名称数组中找到字符串返回部分内首次出现的查询字符串,最后返回字符串的其余部分。

所以,最后$ hint最初是空白变量。所以在循环结束时如果只找到一个匹配,那么它只显示单个名称,如果找到多个匹配,那么它将显示逗号分隔的名称。