web-dev-qa-db-ja.com

PHPの省略形:varが存在する場合はvarを印刷する

これまでに遭遇したことがあり、入力フィールドに変数を出力する必要がありますが、このように変数が設定されているかどうかはわかりません。基本的に、これはe_warningを回避するためです。

<input value='<?php if(isset($var)){print($var);}; ?>'>

これを短くするにはどうすればよいですか?私はこのような新しい関数を導入しても大丈夫です:

<input value='<?php printvar('myvar'); ?>'>

しかし、私はprintvar()関数を書くことに成功していません。

30
bart

PHP> = 5.xの場合:

私の推奨は、issetor関数を作成することです。

function issetor(&$var, $default = false) {
    return isset($var) ? $var : $default;
}

これは、変数を引数として取り、存在する場合はそれを返し、存在しない場合はデフォルト値を返します。今あなたはできる:

echo issetor($myVar);

ただし、他の場合にも使用します。

$user = issetor($_GET['user'], 'guest');

PHP> = 7.0の場合:

PHP 7以降は null-coalesce演算子)を使用できます

$user = $_GET['user'] ?? 'guest';

またはあなたの使用法:

<?= $myVar ?? '' ?>
68
NikiC

別のオプション:

<input value="<?php echo isset($var) ? $var : '' ?>">
11
Galen
<input value='<?php @print($var); ?>'>
2
Erik J. Olson

私が思いつくことができる最も短い答えは<?php isset($var) AND print($var); ?>です

詳細は PHPマニュアルはこちら です。

Ifステートメントに代わる単純な代替法は、ほとんど3項演算子のようで、ANDを使用することです。以下を検討してください。

これは、何らかの理由でecho()では機能しません。これは非常に便利です。

2
McAngujo

<?php echo @$var; ?>.または<?= @$var ?>

0
Dan Breen

現在、PHPでこれを実行できるものはありません。また、PHPで関数を作成してそれを実行することはできません。次のことを実行できます。あなたの目標を達成しますが、変数が存在しない場合はそれを定義するという副作用もあります:

_function printvar(&$variable)
{
    if (isset($variable)) {
        echo $variable;
    }
}
_

これにより、printvar($foo)またはprintvar($array['foo']['bar'])を実行できるようになります。ただし、IMOを実行する最良の方法は、毎回issetを使用することです。迷惑なことはわかっていますが、回避策はありません。 _@_の使用はお勧めしません。

詳細については、 https://wiki.php.net/rfc/ifsetor を参照してください。

0
mfonda

これは私のために働きました:

<?= isset($my_variable) ? $my_variable : $my_variable="Some Value"; ?>
0
Jani

適切なテンプレートエンジンを使用することをお勧めします- https://stackoverflow.com/q/3694801/298479 は2つの素晴らしいものについて言及しています。

とにかくあなたの関数です-変数がグローバルスコープに存在する場合にのみ機能します:

function printvar($name) {
    if(isset($GLOBALS[$name])) echo $GLOBALS[$name];
}
0
ThiefMaster