Подтвердить что ты не робот

Что такое сокращение PHP для: print var, если var существует

Мы все столкнулись с этим раньше, нужно распечатать переменную в поле ввода, но не зная наверняка, установлен ли параметр var. В основном это делается для предотвращения e_warning.

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

Как я могу написать это короче? Я в порядке представляю новую функцию вроде этого:

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

Но мне не удается написать функцию printvar().

4b9b3361

Ответ 1

Для 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 ?? '' ?>

Ответ 2

Другая опция:

<input value="<?php echo isset($var) ? $var : '' ?>">

Ответ 3

<input value='<?php @print($var); ?>'>

Ответ 4

Самый короткий ответ, который я могу придумать, - <?php isset($var) AND print($var); ?>

Более подробная информация здесь, в руководстве по php.

Простой альтернативой оператору if, который почти как тройной оператор, является использование AND. Рассмотрим следующее:

";    // Это альтернатива    isset ($ value) AND print ($ value); ? >

По какой-то причине это не работает с echo(). Я считаю это чрезвычайно полезным!

Ответ 5

Лучше использовать подходящий механизм шаблонов - https://stackoverflow.com/q/3694801/298479 упоминает два хороших.

Здесь ваша функция в любом случае - она ​​будет работать, только если var существует в глобальной области:

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

Ответ 6

Вы можете сделать <?php echo @$var; ?>. Или <?= @$var ?>.

Ответ 7

В настоящее время нет ничего в PHP, который может это сделать, и вы также не можете написать функцию в PHP, чтобы сделать это. Вы можете сделать следующее для достижения своей цели, но также имеет побочный эффект определения переменной, если она не существует:

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

Это позволит вам выполнить printvar($foo) или printvar($array['foo']['bar']). Тем не менее, лучший способ сделать это IMO - использовать isset каждый раз. Я знаю, что это раздражает, но нет никаких хороших путей. Использование @ не рекомендуется.

Для получения дополнительной информации см. https://wiki.php.net/rfc/ifsetor.

Ответ 8

Это сработало для меня:

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

Ответ 9

Вы также можете использовать следующее:

<input type="text" value="<?php echo @$var; ?>">//means if(isset($var)){ echo $var; }

Ответ 10

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

function printvar(&$val) {
    if (isset($val)) echo $val;
}

Ответ 11

$var;
(isset($var)) ? (print $var) : '';

$var = 'hello var';
(isset($var)) ? (print $var) : '';