У меня есть цикл while, который включает в себя несколько сложных функций, поскольку он проходит через записи Mysql. Одной из наиболее простых задач является проверка переменной $ city для символа - и если в $ city есть символ - тогда запись MySql должна быть пропущена, но цикл должен быть продолжен для остальных записей Mysql.
Раньше я использовал "break"; для этого, но я получаю эту ошибку:
PHP Неустранимая ошибка: "перерыв" не в контексте "loop" или "switch"
Я прочитал, что должен использовать "return false"; вместо этого, но это, похоже, не работает.
Буду признателен за любую оказанную помощь.
test.php
<?PHP
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
$city = "ñ"; // I hardcoded for testing
require "test_function.php";
echo "I should not see this if there is a ñ within $city \n\n";
}
?>
test_function.php
<?PHP
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
break;
}
?>
Если вы просто хотите пропустить один город, вы должны использовать continue
, а не break
. по- break
continue
идет к следующей итерации цикла, break
полностью завершает цикл.
Однако эти утверждения должны находиться внутри тела цикла, они не могут быть в функции, которую он вызывает, или в файле include.
Что вы можете сделать, так это включить файл include в переменную и проверить это после него.
test_function.php
<?PHP
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
$skip_city = true;
} else {
$skip_city = false;
}
?>
test.php
return
в операторах if ... Но мне интересно, почему он использовал в цикле while require
которое будет запускать произвольный дисковый ввод-вывод, который идет медленно.
Почему вы включаете другой файл php в цикл? Примените условие в цикле, и оно будет выходить из цикла, если условие согласовано.
<?PHP
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
break;
}
echo "I should not see this if there is a ñ within $city \n\n";
}
?>
Это приведет к поломке итерации, если этот специальный символ найден
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
$isCharFound = false;
while(($row = mysqli_fetch_assoc($result)) && ($isCharFound === false))
{
$city = $row['City'];
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
$isCharFound = true;
continue;
}
echo "I should not see this if there is a ñ within $city \n\n";
}
Если вы хотите пропустить только запись с особым символом
$query = "SELECT * FROM Cities limit 5";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result))
{
$city = $row['City'];
if( strpos( $city, "ñ" ) !== false) {
echo "City $city contains a ñ. Skipping...\n\n";
continue;
}
echo "I should not see this if there is a ñ within $city \n\n";
}
if( strpos( $city, "ñ" )...
) где-нибудь еще в вашем проекте?