Эхо один раз в foreach - PullRequest
       2

Эхо один раз в foreach

0 голосов
/ 14 ноября 2018

У меня есть код на PHP. Однако, когда я echo, на странице ничего не печатается.

Кто-нибудь может мне помочь?

public function checkcharacter(Request $request)
{
    $woord = str_split($request->session()->get('woord'));
    foreach ($woord as $letter) {
        if ($request->letter === $letter) {
           // return view('hangman')->getData (['goed', 'goed gedaan' =>$woord]); // =>$dottedword
            return view('hangman')->with (['woord' => $woord, 'correct' => 'fout']);
        }
        else {
            echo "wrong answer!";
        }
    }

}

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Если вы просто хотите проверить, находится ли буква в слове, цикл не нужен, просто проверьте, есть ли буква в слове - я использую strpos()

public function checkcharacter(Request $request)
{
    if ( strpos ($request->letter, $request->session()->get('woord')) !== false)   {
        return view('hangman')->with (['woord' => $woord, 'correct' => 'fout']);
    }
    else {
        return view('hangman')->with (['woord' => $woord, 'correct' => 'false']);        
    }

}

Обратите внимание, что обе ветви возвращают представление - второе, где буква не найдена, устанавливает 'correct' => 'false', которое вам, возможно, придется изменить в соответствии с вашими потребностями.

0 голосов
/ 14 ноября 2018

Если я вас правильно понимаю, и вы хотите получить только строку wrong answer! один раз, в случае, если последняя не совпадает, вам нужно использовать break; конструкцию.

public function checkcharacter(Request $request)
{
    $woord = str_split($request->session()->get('woord'));
    foreach ($woord as $letter) {
        if ($request->letter !== $letter) {
            echo "wrong answer!";
            break;
        }

        // return view('hangman')->getData (['goed', 'goed gedaan' =>$woord]); // =>$dottedword
        return view('hangman')->with(['woord' => $woord, 'correct' => 'fout']);
    }
}

Надеюсь, я правильно понимаю ваш вопрос.

Upd 1.0

Если вы не хотите прерывать цикл, у меня есть второй способ решения вашей проблемы:

public function checkcharacter(Request $request)
{
    $woord = str_split($request->session()->get('woord'));
    $isCorrect = true;

    foreach ($woord as $letter) {
        if ($request->letter !== $letter) {
            $isCorrect = false;
        }

        // return view('hangman')->getData (['goed', 'goed gedaan' =>$woord]); // =>$dottedword
        return view('hangman')->with(['woord' => $woord, 'correct' => 'fout']);
    }

    if (!$isCorrect) {
        echo 'wrong answer!';
    }
}
0 голосов
/ 14 ноября 2018

Следующий блок else должен находиться за пределами блока foreach

else {
   echo "wrong answer!";
}

Итак, предположим, что если условие успешно, тогда поток вернется без какого-либо эха.Я не запускал этот фрагмент.Пожалуйста, проверьте это на вашем конце.

public function checkcharacter(Request $request)
{
    $woord = str_split($request->session()->get('woord'));
    foreach ($woord as $letter) {

        if ($request->letter === $letter) {
           // return view('hangman')->getData (['goed', 'goed gedaan' =>$woord]); // =>$dottedword
            return view('hangman')->with (['woord' => $woord, 'correct' => 'fout']);
        }
    }
    // if answer is not found then will give the following echo once.
    echo "wrong answer!";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...