2015-09-01 7 views
-2

Я пытаюсь запрограммировать словарь PHP с плоским файлом (английский -> испанский).
У меня это до сих пор:php loop и главная страница

<?php 

$data = 
'car;coche 
cat;gato 
fat;gordo 
far;lejos'; 

    if($data) { 

    $line = explode("\n", $data); 
    for($i = 0; $i<count($line); $i++) { 

     $item = explode(";", $line[$i]); 

     if($_GET['word'] == $item[0]) { echo"<div>" . $item[0] . "</div> <div>" . $item[1] . "</div>"; } 
     else {echo MAIN PAGE;} 
    } 
} 

?> 

Она идеально подходит, потому что он открывает цикл страниц в один файл PHP:

например http://localhost/?word=fat отпечатки "Fat Gordo"

Проблема возникает при создании главной страницы http://localhost. Я пробовал с else{ echo "MAIN PAGE";}, но, где бы я его не разместил, он печатает «ГЛАВНУЮ СТРАНИЦУ ПАГМЕННОЙ ПАГМЫ».

Любая помощь?

+1

Итак, код, отличный от того, что вы показываете нам, вызывает неожиданное поведение? – David

+0

Извините, я исправил его – Kathlyn

ответ

0

Это потому, что вы перебираете каждую строку в $data. Независимо от результата выражения if, после этого он просто переходит к следующей итерации и снова запускает оператор if.

Так что, если вы добавите к вашему } else { echo "mainpage", если он будет эхо mainpage каждый раз, когда $_GET['word'] не соответствует $item[0] (который, очевидно, в каждой строке, если $_GET['word'] не определен)

Чтобы избежать этого вы можете добавить что-то вроде это:

if($data && !empty($_GET['word'])) { 
    (...) 
} else { 
    echo "mainpage"; 
} 

Если у вас есть большой словарь, это также хорошо, чтобы разорвать вас петлю, как только вы нашли подходящее слово:

if($_GET['word'] == $item[0]) { 
    echo "<div>" . $item[0] . "</div> <div>" . $item[1] . "</div>"; 
    break; 
} 
Смежные вопросы