2016-04-17 93 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函數在字符串的返回部分中找到您的查詢字符串的第一個匹配項,並最終返回字符串的其餘部分。

所以,最後$提示是最初的空白變量。因此,在循環結束時,如果只找到一個匹配,那麼它只顯示單個名稱,如果找到多個匹配,那麼它將顯示帶有逗號分隔的名稱。