2016-04-17 10 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とunderの部分を理解していませんが、Ajaxを含む他のすべてはわかります。誰かが主に説明することができます

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

これは唯一の本当の問題です。 $ qは$ qの長さに0間の文字列$名の長さが含まれている場合、ブロックが実行されている場合は、この行は:)おかげ

おかげ

答えて

1

を正確に何をしているのです。 たとえば、$ q = "hello world"および$ name = "hello"の場合、IFが実行されます。 $ q = "hello world"と$ name = "world"の場合、Ifが実行されません。

+0

ありがとう:非常に分かりやすいd –

1

$ len変数はリクエストの長さから来ます。

あなたがリクエストしている場合は、Hegeが4になります。

$ nameは配列の値の1つです。

substr関数クエリの長​​さで配列要素を取得しています。

例えば、私たちのクエリの長​​さは4です。2番目の配列要素はsubstr関数からのBrittanyです。ブリットstristr関数はHegeとBrtiが等しいかどうかをチェックします。ここ

1

コード開始

foreachの($として$名)

と - >すべての名前は$名として$配列をループ内に保存されます。

- > substr($ name、0、$ len)です。

ここで、$ lenはクエリ文字列パラメータの長さです。

ですから、最後にsubstr($ name、0、$ len)は0から始まる格納された名前配列の文字列のその部分だけをクエリ文字列長に返します。

とその後にstristr関数。

これは、substr関数を使用して格納された名前配列から返された文字列の中にクエリ文字列が最初に現れ、最後に残りの文字列を返します。

ですから、$ hintは最初は空白変数です。したがってループの終わりに1つの一致が見つかった場合は単一の名前しか表示されず、複数の一致が見つかった場合はカンマ区切りの名前が表示されます。