2016-04-17 47 views
0
// 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和下面的部分,但包括ajax在内的所有内容都是可以理解的。有人可以解释主要是

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

这是唯一真正的roblem,我没有得到。到底这是什么线路IF如果$ Q包含0之间的字符串$名称长度$ Q的长度块被执行做:)谢谢

感谢

回答

1

。 例如,如果$ q =“hello world”和$ name =“hello”,则执行IF。 如果$ q =“hello world”和$ name =“world”,那么If不会被执行。

+0

谢谢:d很容易理解 –

1

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

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

$ name是其中一个数组值。

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

例如在我们的案例中,我们的查询长度是4.第二个数组元素是来自substr函数的布列塔尼我们将只获得brit stristr函数将检查Hege和Brti是否相等。

1

这里代码开始与

的foreach($ A $作为名称)

- >这将循环存储在所有名称$ a数组作为$名称。

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

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

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

以及之后的那个stristr函数。

它将从您存储的名称数组中使用substr函数在字符串的返回部分中找到您的查询字符串的第一个匹配项,并最终返回字符串的其余部分。

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