web-dev-qa-db-ja.com

PHP-変数が空でない場合、いくつかのhtmlコードをエコーし​​ます

変数が空でない場合、いくつかのhtmlコードを表示します。それ以外の場合は何も表示しません。

私はこのコードを試しましたが機能しません:

<?php 
    $web = the_field('website');
    if (isset($web)) {
?>
       <span class="field-label">Website: </span><a href="http://<?php the_field('website'); ?>" target="_blank"><?php the_field('website'); ?></a> 
<?php
    } else { 
        echo "Niente";
    }
?>
37
if (!empty($web)) {
?>
    <span class="field-label">Website:  </span><a href="http://<?php the_field('website'); ?>" target="_blank"><?php the_field('website'); ?></a> 
<?php
} else { echo "Niente";}

http://us.php.net/manual/en/function.empty.php

78
Rodney Folz

issetは、変数が ""であってもtrueを返します。 issetは、変数がnullの場合にのみfalseを返します。あなたがすべきこと:

if (!empty($web)) {
    // foo
}

これにより、変数が空ではないことが確認されます。

お役に立てれば

16
vanneto

単にif ($web)を使用してください。変数にtruthy値がある場合、これはtrueです。

前の行で変数を設定しただけなので、変数が存在することがわかっているため、issetemptyは必要ありません。

10
deceze

if(!empty($var))がどのように混乱を引き起こすかはわかりませんが、if ($var)の方が簡単であることに同意します。 –vanneto 12年3月8日13:

emptyには、存在しない変数のエラーを抑制するという特定の目的があるためです。必要な場合を除き、エラーを抑制したくありません。 PHPのissetおよびemptyへの決定的なガイド は、問題を詳細に説明しています。 –deceze♦ 12年3月9日1:24で

変数が配列である場合、エラー抑制部分に注目します。ここで、keyアクセス中定義されている場合と定義されていない場合

  1. if($web['status'])は以下を生成します:

    注意:未定義のインデックス:status

  2. エラーを引き起こさずにそのキーにアクセスするには:
    1. if(isset($web['status']) && $web['status'])(1番目の条件がFALSEの場合、2番目の条件はテストされません)または
    2. if(!empty($web['status']))

ただし、 deceze♦指摘 のように、定義済み変数のtruthy値は!empty冗長ですが、PHPはFALSEとして次の例を想定していることを覚えておく必要があります。

  • null
  • ''または""
  • 0.0
  • 0
  • '0'または"0"
  • '0' + 0 + !3

したがって、zeroが検出したい意味のあるステータスである場合、実際に文字列と数値の比較を使用する必要があります。

  1. エラーなしおよびzero検出:

    if(isset($web['status'])){
      if($web['status'] === '0' || $web['status'] === 0 ||
         $web['status'] === 0.0 || $web['status']) {
        // not empty: use the value
      } else {
        // consider it as empty, since status may be FALSE, null or an empty string
      }
    }
    

    汎用条件($web['status'])は、ステートメント全体の最後に残す必要があります。

2
CPHPython
if(!empty($web))
{
   echo 'Something';
}
0
hohner

issetを使用している場合、issetは、変数が設定され( 'exists')、NULLではないかどうかを確認します。探しているのはemptyで、変数が設定されていても、変数が空かどうかをチェックします。何が空で何が見ていないかを確認するには:

http://php.net/manual/en/function.empty.php

また、 http://php.net/manual/en/function.isset.phpissetが正確に行うことを確認します。したがって、期待どおりに機能しない理由を理解できます。行う。

0
pbond
if($var !== '' && $var !== NULL)
{
   echo $var;
}
0
dev verma

これも機能することを願っています。「is_null」を使用してみてください

<?php 
$web = the_field('website');
if (!is_null($web)) {
?>

....html code here

<?php
} else { 
    echo "Niente";
}
?>

http://php.net/manual/en/function.is-null.php

それがあなたに合っていることを願っています。

0
H. Tom

問題は、wordpressプラグインであるAdvanced Custom Fields用のthe_field()の使用にあります。

変数でフィールドを使用する場合は、$web = get_field('website');を使用する必要があります。

0
photocurio