2016-04-17 2 views
0

Я собрал этот код из w3school и немного изменил код. Но теперь stristr() не работает согласно моему желанию. Например, когда я набираю «E», результатом является показывая «Eva» в 5 раз, и когда я набираю «Ev», он показывает «Eva» в 3 раза. Следует отметить, что массив имеет 5 слов, начинающихся с «E», а 3 слова начинаются с «Ev». Другая проблема заключается в том, как я могу сохранить имя пользователя как элементы массива в файле JSON и пропустить данные (имя пользователя) для подсказки поиска. Это означает, что я не хочу использовать жестко закодированные данные, подобные этому, но я хочу использовать динамические данные для прогнозирования поиска.php stristr() не работает должным образом

<?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

Проверьте журнал ошибок, что код производит поток ошибки – RiggsFolly

ответ

0

Edit: должно быть $hint .= ", $name";

вы можете изменить свой цикл, чтобы вы положить нашли результаты в массиве:

<?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); 
} 
?> 
Смежные вопросы