0

重複の可能性:
PHPのifステートメントについて

これは簡単な質問です。しかし、ここでは、条件が1つの変数のみで機能するかどうかを知る必要があります。

$category='';

if ($category) {

}

If条件で実際に何をチェックインするかわかりますか?条件には変数が1つだけあります。

チェック変数がTRUEまたはFALSEですか?

4

8 に答える 8

3

PHPは弱い型の言語です。条件で何が評価されるかを理解するには、ブール値の変換規則をif参照してください。

マニュアルからの引用:

ブール値に変換する場合、次の値が考慮されFALSEます。

  • ブール値FALSE自体
  • 整数0(ゼロ)
  • フロート0.0(ゼロ)
  • の文字列、および文字列"0"
  • 要素がゼロの配列
  • メンバー変数がゼロのオブジェクト(PHP 4のみ)
  • 特殊なタイプNULL(未設定の変数を含む)
  • SimpleXML空のタグから作成されたオブジェクト

したがって、あなたの状態は、として評価されFALSEます$category == ''(bool) '' === FALSE

于 2013-01-14T12:42:44.510 に答える
2

タイプ1

$category = '';
if ($category) {
   echo 'category';
} else {
   echo 'no category';
}

//出力:カテゴリなし

タイプ2

$category = TRUE;
if ($category) {
   echo 'category';
} else {
   echo 'no category';
}

//出力:category

タイプ3

$category = '';
if (!empty($category)) {
   echo 'category';
} else {
   echo 'no category';
}

//出力:カテゴリなし

タイプ4

$category = 0;
if (!empty($category)) {
   echo 'category';
} else {
   echo 'no category';
}

//出力:カテゴリなし

タイプ5

$category = 0;
if (isset($category)) {
   echo 'category';
} else {
   echo 'no category';
}

//出力:category

于 2013-01-14T12:47:57.257 に答える
1

これはチェックしますTRUE

if ($category) {

}
于 2013-01-14T12:40:19.287 に答える
1

この場合、空の文字列はブール値にキャストされますfalse。を参照してくださいmanual on Booleans

于 2013-01-14T12:42:00.933 に答える
1

これは、変数がに評価されるかどうかをチェックします。これはtrue、次と同等です。

if( (bool)$category === true) )
于 2013-01-14T12:42:13.590 に答える
1

はいTRUEまたはFALSEをチェックしています。式がTRUEと評価された場合、PHPはステートメントを実行し、FALSEと評価された場合、それを無視します。

于 2013-01-14T12:42:58.070 に答える
1

if($ category){

}

$categoryに値があるかどうかを確認するだけです。$categoryに値を指定しませんでした。この場合、FALSEになります。

于 2013-01-14T12:43:22.537 に答える
0

評価されたステートメントがtrueの場合は常に、if条件のブロックがアクティブになります。

PHPの空の文字列はfalseと評価されるため、これはアクティブ化されません。たとえば、次のように、期待する内容を指定することで、より具体的にすることができます。

   $category = '';
   if (empty($category)) {

   }

...空の場合はいつでもこれがアクティブになると予想される場合。それは本当にあなたが何をしようとしているのかに依存しますが、このように私は条件が決して満たされないと思います。

于 2013-01-14T12:45:52.840 に答える