Что такое сокращение PHP для: print var, если var существует
Мы все столкнулись с этим раньше, нужно распечатать переменную в поле ввода, но не зная наверняка, установлен ли параметр var. В основном это делается для предотвращения e_warning.
<input value='<?php if(isset($var)){print($var);}; ?>'>
Как я могу написать это короче? Я в порядке представляю новую функцию вроде этого:
<input value='<?php printvar('myvar'); ?>'>
Но мне не удается написать функцию printvar().
Ответы
Ответ 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) : '';