One line if statement in PHP

PhpIf Statement

Php Problem Overview


I'd like to to some thing similar to JavaScript's

var foo = true;
foo && doSometing();

but this doesn't seem to work in PHP.

I'm trying to add a class to a label if a condition is met and I'd prefer to keep the embedded PHP down to a minimum for the sake of readability.

So far I've got:

<?php $redText='redtext ';?>
<label class="<?php if ($requestVars->_name=='')echo $redText;?>labellong">_name*</label>
<input name="_name" value="<?php echo $requestVars->_name; ?>"/>

but even then the IDE is complaining that I have an if statement without braces.

Php Solutions


Solution 1 - Php

use the ternary operator ?:

change this

<?php if ($requestVars->_name == '') echo $redText; ?>

with

<?php echo ($requestVars->_name == '') ? $redText : ''; ?>

In short

// (Condition)?(thing's to do if condition true):(thing's to do if condition false);

Solution 2 - Php

You can use Ternary operator logic Ternary operator logic is the process of using "(condition)? (true return value) : (false return value)" statements to shorten your if/else structures. i.e

/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // returns true

Solution 3 - Php

Something like this?

($var > 2 ? echo "greater" : echo "smaller")

Solution 4 - Php

Use ternary operator:

echo (($test == '') ? $redText : '');
echo $test == '' ? $redText : ''; //removed parenthesis

But in this case you can't use shorter reversed version because it will return bool(true) in first condition.

echo (($test != '') ?: $redText); //this will not work properly for this case

Solution 5 - Php

I like to use the minimalist PHP text output syntax:

HTML stuff <?= $some_string ?> HTML stuff

(This works the same as using an <?php echo $some_string; ?>)

You can also use the ternary operator:

//(condition) ? (do_something_when_true) : (do_something_when_false);
($my_var == true) ? "It's true" : "It's false ;

Ending up like this:

<?= ($requestVars->_name=='') ? $redText : '' ?>

Solution 6 - Php

Sample Usage

Here are a couple more uses of ternary operators, ranging from simple to advanced:

Basic Usage:

$message = 'Hello '.($user->is_logged_in() ? $user->get('first_name') : 'Guest');

Short hand Usage:

$message = 'Hello '.($user->get('first_name') ?: 'Guest');

Echo Inline

echo 'Based on your score, you are a ',($score > 10 ? 'genius' : 'nobody');

A bit Tougher

$score = 10;
$age = 20;
echo 'Taking into account your age and score, you are: ',($age > 10 ? ($score < 80 ? 'behind' : 'above average') : ($score < 50 ? 'behind' : 'above average')); // returns 'You are behind'

complicated level

 $days = ($month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year %400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31)); //returns days in the given month

To learn more about ternary operators and usage, visit PHP.net Comparison Operators or here.

Solution 7 - Php

Ill provide with an other answer since the original question specifies the use of if() in html

<a class="menu-item" href="/about-us"><?= (pll_current_language() == 'en') ? 'About us' : 'Om oss' ?></a>

Solution 8 - Php

The provided answers are the best solution in your case, and they are what I do as well, but if your text is printed by a function or class method you could do the same as in Javascript as well

function hello(){
echo 'HELLO';
}
$print = true;
$print && hello();

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionandrewView Question on Stackoverflow
Solution 1 - PhpsanjeevView Answer on Stackoverflow
Solution 2 - PhpMuhammad Adeel MalikView Answer on Stackoverflow
Solution 3 - PhpceubenView Answer on Stackoverflow
Solution 4 - PhpJsowaView Answer on Stackoverflow
Solution 5 - PhpGusstavv GilView Answer on Stackoverflow
Solution 6 - PhpBaachView Answer on Stackoverflow
Solution 7 - PhpakwasiijuniorView Answer on Stackoverflow
Solution 8 - PhpBorisView Answer on Stackoverflow