если (! пусто) выдает - PullRequest
1 голос
/ 14 июля 2009

Что с этим не так? Код в «операторе if» выполняется, если $ forwardformat не пусто, но код «else» не выполняется, если $ forwardformat пусто. Есть идеи?!

while ($row = mysql_fetch_array($forwardresult)) {
    $forward = $row["id"];
    $forwardformat = str_replace(" ","",$forward);

    if (!empty($forwardformat)) {
        echo 'Exploring moves us <a href="casestudy.php?id=';
        echo $forwardformat;
        echo '">forward</a>';
    }
    else {
        echo "forward";
    }
}

Ответы [ 5 ]

6 голосов
/ 14 июля 2009

см. Список вещей, которые пустые, считают пустыми

Возвращает FALSE, если переменная имеет непустое и ненулевое значение.

The following things are considered to be empty: 

■"" (an empty string)
■0 (0 as an integer)
■"0" (0 as a string)
■NULL
■FALSE
■array() (an empty array)
■var $var; (a variable declared, but without a value in a class)
3 голосов
/ 14 июля 2009
  1. Он действительно должен ввести оператор if, если $ forwardformat не пуст.

  2. Что касается оператора else, он идет туда, только если он пуст. Поэтому вам, возможно, придется учитывать, что $ forwardformat не пустой. Пробелы могут быть? Попытайтесь повторить $ forward между границами, чтобы быть уверенным в этом.

2 голосов
/ 14 июля 2009

Я думаю, ваша проблема в этой строке:


$forwardformat = str_replace(" ","",$forward);

Это соответствует только пробелу. Tab, Newline и т. Д. Не заменяются (и не отображаются в выводе (html-) при отображении результата. Поэтому я рекомендую попробовать


$forwardformat = preg_replace('/\s+/','',$forward);

НТН

Argelbargel

0 голосов
/ 14 июля 2009

Если у вас есть многобайтовые строковые данные (как в обычной кодировке UTF-8) в вашей базе данных ...

Проверьте mb_strlen () ... сравните его с strlen (), который должен вернуть 0, если он действительно пустой.

0 голосов
/ 14 июля 2009

Попробуйте, чтобы исследовать содержимое $ forwardformat

  
    while ($row = mysql_fetch_array($forwardresult)) {  
        $forward = $row["id"];  
        $forwardformat = str_replace(" ","",$forward);  
        if (!empty($forwardformat)) {  
            echo 'Exploring moves us <a href="casestudy.php?id='. $forwardformat .'">forward</a>';  
            //DEBUG
            echo "<textarea>";
            var_dump($forwardformat);
            echo "</textarea>";
        }  
        else {  
            echo "forward";  
        }  
    }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...