Для чего нужен PHP-код: print var, если var существует - PullRequest
30 голосов
/ 29 апреля 2011

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

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

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

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

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

Ответы [ 11 ]

66 голосов
/ 29 апреля 2011

для 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 ?? '' ?>
10 голосов
/ 29 апреля 2011

Другой вариант:

<input value="<?php echo isset($var) ? $var : '' ?>">
3 голосов
/ 29 апреля 2011
<input value='<?php @print($var); ?>'>
2 голосов
/ 31 августа 2015

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

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

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

';// Это альтернативный isset ($ value) И print ($ value);?>

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

0 голосов
/ 12 января 2019

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

<input type="text" value="<?php echo @$var; ?>">//means if(isset($var)){ echo $var; }
0 голосов
/ 29 марта 2016

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

<?= isset($my_variable) ? $my_variable : $my_variable="Some Value"; ?>
0 голосов
/ 29 апреля 2011

В настоящее время в 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 голосов
/ 29 апреля 2011
<input value='<?php printvar(&$myvar); ?>' />

function printvar(&$val) {
    if (isset($val)) echo $val;
}
0 голосов
/ 29 апреля 2011

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

0 голосов
/ 29 апреля 2011
$var;
(isset($var)) ? (print $var) : '';

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