2011-05-09 9 views
2

空の変数を定義していますか?

$test = ''; 

if(empty($test)){ $test = "not found";} 

echo $test; 

答えは$test変数が空である

が、1つの下にもかかわらず、「見つかりません」ということになるような場合を想定しか与えない結果。

$test = ' '; 

if(empty($test)){ $test = "not found";} 

echo $test; 

どのようにこれらの変数をPHPで空にすることができますか?

+1

文字列は、その長さが0の場合は空です:

if (!trim($test)) { 

しかし、実際にどの文字列のコンテンツの利用があるかどうかを確認

1つの空白文字を含む文字列の長さは1です。 – Gumbo

答えて

5

値を確認してから確認してください。

emptyは変数だけではなくあなたが渡している値をチェックするので、それをチェックする前にトリミングすることが重要である

$test = trim(' '); 

if (empty($test)) { /* ... */ } 

echo $test; 
+0

ええ、私は "トリム"機能を忘れていた...感謝の男 – alwyn

1

あなたは

if (empty(trim($test))) ...が修正行うことができます:

$test = trim($test);

if (empty($test)) ...

トリムは、文字列の両側から空白を削除します。

+0

-1事前に試してみることをお勧めします。 – Gumbo

+0

-1です。 'empty'は式ではなく変数に対してのみ機能します。このケースはPHPマニュアルで明示的に言及されています。*動作しません。 –

+0

あなたは正しく修正されています。 – Austin

0

これをテストするために、独自の関数を作成します。

function my_empty($str) { 
    $str = trim($str); 
    return empty($str); 
} 

こと空のメソッドが既に提供しているものに加えて、空白だけを含むすべての文字列を空として扱います。

5

$test = ' 'は空ではありません。以下のものは と考えられる

空である:documentationで詳細から

  • ""(空文字列)
  • 0(整数として0)
  • 0.0 (浮動小数点数として0)
  • "0"(文字列として0)
  • NULL
  • FALSE
  • array()(空の配列)
  • var $ var; (変数が宣言されたが、クラス内の値なし)

これらの質問$testだけ空白文字であれば、テストを見たい場合:

If string only contains spaces?
How to check if there are only spaces in string in PHP?

1

なぜ誰もがemptyを推薦しているのか分かりません。それからちょうどそれを残し、PHPSブールコンテキストハンドリングを使用することができます。

if (!strlen(trim($test))) { 
関連する問題