Check if variable is set and then echo it without repeating?
isset, php, variables
Solution
The closest you can get to what you are looking for is using short form of ternary operator (available since PHP5.3)
echo $a ?: "not set"; // will print $a if $a evaluates to `true` or "not set" if not
But this will trigger "Undefined variable" notice. Which you can obviously suppress with `@`
echo @$a ?: "not set";
Still, not the most elegant/clean solution.
So, the cleanest code you can hope for is
echo isset($a) ? $a: '';
Problem
Is there a concise way to check if a variable is set, and then echo it without repeating the same variable name? Instead of this: ``` <?php if(!empty($this->variable)) { echo '<a href="', $this->variable, '">Link</a>'; } ?> ``` I'm thinking about something in the lines of this C-style pseudocode: ``` <?php echo if(!empty($this->variable, '<a href="', %s, '">Link</a>')); ?> ``` PHP has sprintf, but it doesn't quite do what I was hoping for. If course I could make a method/function out of it, but surely there must be a way to do it "natively"? Update: Ternary operations would also repeat the `$this->variable` part, if I understood it? ``` echo (!empty($this->variable) ? '<a href="',$this->variable,'">Link</a> : "nothing"); ```