2009-07-14 4 views
1

何が問題なのですか? $ forwardformatが空の空でない場合は "if文"のコードが実行されますが、$ forwardformatが空の場合は "else"コードは実行されません。何か案は?!if(!empty)issue

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"; 
    } 
} 
+0

何がダですか? $ row ['id']の型ですか? – Mohamed

答えて

3
  1. の$ forwardformatが空でない場合、それは確かにif文を入力する必要があります。

  2. else文については、空の場合にのみそこに移動します。したがって、$ forwardformatは空ではないと考える必要があります。空白は多分?それを確かめるために、境界の間に$ forwardをエコーし​​てみてください。

+4

echoの代わりにvar_dumpを使用 – Flo

0

はvarが空でないと非ゼロを持っている場合は、空がFALSEとして空

戻り値を検討することを事のリストを参照してください$ 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"; 
     } 
    } 
6

の内容を調査するために、これを試してみてください値。私が思う

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) 
+0

良い答え - 良い詳細。 – Fenton

2

、あなたの問題は、この行です:


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

これが唯一の空白文字と一致します。タブ、改行などが交換されていない(と結果をエコーするとき、本当にあなた(HTML-)出力には表示されません。そのため、私はお勧め、あなたが


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

を試してみてくださいHTH

Argelbargel

0

の場合

mb_strlen()を参照してください... strlen()と比較してください。これは真の場合には0を返します。空です。