変数が空でない場合、いくつかの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";
}
?>
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";}
isset
は、変数が ""であってもtrueを返します。 isset
は、変数がnullの場合にのみfalseを返します。あなたがすべきこと:
if (!empty($web)) {
// foo
}
これにより、変数が空ではないことが確認されます。
お役に立てれば
単にif ($web)
を使用してください。変数にtruthy値がある場合、これはtrue
です。
前の行で変数を設定しただけなので、変数が存在することがわかっているため、isset
やempty
は必要ありません。
if(!empty($var))
がどのように混乱を引き起こすかはわかりませんが、if ($var)
の方が簡単であることに同意します。 –vanneto 12年3月8日13:
empty
には、存在しない変数のエラーを抑制するという特定の目的があるためです。必要な場合を除き、エラーを抑制したくありません。 PHPのisset
およびempty
への決定的なガイド は、問題を詳細に説明しています。 –deceze♦ 12年3月9日1:24で
変数が配列である場合、エラー抑制部分に注目します。ここで、keyアクセス中定義されている場合と定義されていない場合:
if($web['status'])
は以下を生成します:注意:未定義のインデックス:status
if(isset($web['status']) && $web['status'])
(1番目の条件がFALSE
の場合、2番目の条件はテストされません)またはif(!empty($web['status']))
。ただし、 deceze♦指摘 のように、定義済み変数のtruthy値は!empty
冗長ですが、PHPはFALSE
として次の例を想定していることを覚えておく必要があります。
null
''
または""
0.0
0
'0'
または"0"
'0' + 0 + !3
したがって、zeroが検出したい意味のあるステータスである場合、実際に文字列と数値の比較を使用する必要があります。
エラーなしおよび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']
)は、ステートメント全体の最後に残す必要があります。
if(!empty($web))
{
echo 'Something';
}
isset
を使用している場合、isset
は、変数が設定され( 'exists')、NULL
ではないかどうかを確認します。探しているのはempty
で、変数が設定されていても、変数が空かどうかをチェックします。何が空で何が見ていないかを確認するには:
http://php.net/manual/en/function.empty.php
また、 http://php.net/manual/en/function.isset.phpisset
が正確に行うことを確認します。したがって、期待どおりに機能しない理由を理解できます。行う。
if($var !== '' && $var !== NULL)
{
echo $var;
}
これも機能することを願っています。「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
それがあなたに合っていることを願っています。
問題は、wordpressプラグインであるAdvanced Custom Fields用のthe_field()
の使用にあります。
変数でフィールドを使用する場合は、$web = get_field('website');
を使用する必要があります。