2016-04-17 12 views
0

Ich habe diesen Code von w3school gesammelt und den Code ein wenig geändert.Aber jetzt funktioniert stristr() nicht nach meinem Wunsch.Zum Beispiel, wenn ich "E" eingeben, ist das Ergebnis zeige "Eva" für 5 mal und wenn ich "Ev" schreibe zeigt es "Eva" für 3 mal. Beachten Sie, dass das Array 5 Wörter hat mit "E" und 3 Wörter beginnen mit "Ev" .And Ein anderes Problem ist, wie kann ich Benutzernamen als Elemente eines Arrays in einer JSON-Datei speichern und durch die Daten (Benutzername) für einen Suchhinweis. Das bedeutet, ich möchte nicht hart codierte Daten wie diese lieber ich verwenden möchte dynamische Daten für die Suchvorhersage.php stristr() funktioniert nicht richtig

<?php 
// Array with names 
$a[] = "Anna"; 
$a[] = "Brittany"; 
$a[] = "Cinderella"; 
$a[] = "Diana"; 
$a[] = "Eva"; 
$a[] = "Fiona"; 
$a[] = "Gunda"; 
$a[] = "Hege"; 
$a[] = "Inga"; 
$a[] = "Johanna"; 
$a[] = "Kitty"; 
$a[] = "Linda"; 
$a[] = "Nina"; 
$a[] = "Ophelia"; 
$a[] = "Petunia"; 
$a[] = "Amanda"; 
$a[] = "Raquel"; 
$a[] = "Cindy"; 
$a[] = "Doris"; 
$a[] = "Eve"; 
$a[] = "Evita"; 
$a[] = "Sunniva"; 
$a[] = "Tove"; 
$a[] = "Unni"; 
$a[] = "Violet"; 
$a[] = "Liza"; 
$a[] = "Elizabeth"; 
$a[] = "Ellen"; 
$a[] = "Wenche"; 
$a[] = "Vicky"; 

// get the q parameter from URL 
$q = $_REQUEST["q"]; 

$hint = ""; 

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

// Output "no suggestion" if no hint was found or output correct values 
echo $hint === "" ? "no suggestion" : $hint; 
?> 
+0

Ihre Fehlerprotokolle, dass Code, um einen Strom von erzeugt Fehler – RiggsFolly

Antwort

0

Edit: sollte es $hint .= ", $name";

sein Sie Ihre Schleife verändern können, so dass Sie Ergebnisse in einem Array gefunden put:

<?php 
if ($q !== "") { 
    $q = strtolower($q); 
    $len=strlen($q); 
    $found = array(); 
    foreach($a as $name) { 
     if (stristr(substr($name, 0, $len),$q)) { 
      array_push($found, $name); 
     } 
    } 

    print_r($found); 
} 
?>