これまでに遭遇したことがあり、入力フィールドに変数を出力する必要がありますが、このように変数が設定されているかどうかはわかりません。基本的に、これはe_warningを回避するためです。
<input value='<?php if(isset($var)){print($var);}; ?>'>
これを短くするにはどうすればよいですか?私はこのような新しい関数を導入しても大丈夫です:
<input value='<?php printvar('myvar'); ?>'>
しかし、私はprintvar()関数を書くことに成功していません。
私の推奨は、issetor
関数を作成することです。
function issetor(&$var, $default = false) {
return isset($var) ? $var : $default;
}
これは、変数を引数として取り、存在する場合はそれを返し、存在しない場合はデフォルト値を返します。今あなたはできる:
echo issetor($myVar);
ただし、他の場合にも使用します。
$user = issetor($_GET['user'], 'guest');
PHP 7以降は null-coalesce演算子)を使用できます :
$user = $_GET['user'] ?? 'guest';
またはあなたの使用法:
<?= $myVar ?? '' ?>
別のオプション:
<input value="<?php echo isset($var) ? $var : '' ?>">
<input value='<?php @print($var); ?>'>
私が思いつくことができる最も短い答えは<?php isset($var) AND print($var); ?>
です
詳細は PHPマニュアルはこちら です。
Ifステートメントに代わる単純な代替法は、ほとんど3項演算子のようで、ANDを使用することです。以下を検討してください。
これは、何らかの理由でecho()では機能しません。これは非常に便利です。
<?php echo @$var; ?>.
または<?= @$var ?>
。
現在、PHPでこれを実行できるものはありません。また、PHPで関数を作成してそれを実行することはできません。次のことを実行できます。あなたの目標を達成しますが、変数が存在しない場合はそれを定義するという副作用もあります:
_function printvar(&$variable)
{
if (isset($variable)) {
echo $variable;
}
}
_
これにより、printvar($foo)
またはprintvar($array['foo']['bar'])
を実行できるようになります。ただし、IMOを実行する最良の方法は、毎回isset
を使用することです。迷惑なことはわかっていますが、回避策はありません。 _@
_の使用はお勧めしません。
詳細については、 https://wiki.php.net/rfc/ifsetor を参照してください。
これは私のために働きました:
<?= isset($my_variable) ? $my_variable : $my_variable="Some Value"; ?>
適切なテンプレートエンジンを使用することをお勧めします- https://stackoverflow.com/q/3694801/298479 は2つの素晴らしいものについて言及しています。
とにかくあなたの関数です-変数がグローバルスコープに存在する場合にのみ機能します:
function printvar($name) {
if(isset($GLOBALS[$name])) echo $GLOBALS[$name];
}