2013-08-29 3 views
3

У меня есть цикл while, который забирает строку, и я пытаюсь создать структуру, чтобы каждая строка создавала 2 ссылки. Первое - это немецкое слово, второе - английское. Выход, который я получаю, повторяется, как если бы строка не увеличивалась. Я сузил к этому:PHP duplicate output

PHP:

while ($row = $database->row()->fetch()) { 
    foreach ($row as $value) { 
     $this->data .= $value . "!"; 
    } 
    list($this->pid, $this->german, $this->english) = explode("!", $this->data); 
    $this->links .= "<a href=\"#\" class=\"german $this->pid\">$this->german</a><br/><a href=\"#\" class=\"english $this->pid\">$this->english</a><br/>"; 
} 

Выход:

die Männer 
men 
die Männer 
men 
+0

Какую базу данных абстракции вы используете? – Orangepill

+0

@Orangepill Я использую PDO – user1408643

+0

Попробуйте получить количество строк, а затем установите '$ n', а после этого выполните цикл while(), например' while ($ n <$ rows; $ n ++) '. Если есть одна строка, просто выделите вывод только одной строки. Я человек mysqli, и мне не нравится 'foreach()'. – VladHQ

ответ

0
$row = array(); 
    while ($row = $database->row()->fetch()) { 
     $row[] = $row; 
    } 

    foreach ($row as $value) 
    { 
     $this->data .= $value . "!"; 
     list($this->pid, $this->german, $this->english) = explode("!", $this->data); 
     $this->links .= "<a href=\"#\" class=\"german $this->pid\">$this->german</a><br/><a href=\"#\" class=\"english $this->pid\">$this->english</a><br/>"; 
    } 
+0

У меня есть предупреждение «Предупреждение: неверный аргумент, предоставленный foreach()». – user1408643

0

Я решил эту проблему, глядя на клавишах и создание переменных на основе простой тест с сопоставленной строкой. Если кто-то сможет улучшить мой ответ, я бы хотел его услышать. Благодарю.

PHP:

while ($row = $database->row()->fetch()) { 
    while(list($key, $value) = each($row)) { 
     if ($key == "PID") { 
      $this->pid = $value; 
     } 
     if ($key == "german") { 
      $this->german = $value; 
     } 
     if ($key == "english") { 
      $this->english = $value; 
     } 
    } 
    $this->links .= "<a href=\"#\" class=\"german $this->pid\">$this->german</a><br/><a href=\"#\" class=\"english $this->pid\">$this->english</a><br/>"; 
}