One line if statement in PHP – Php

Photo of author
Written By M Ibrahim
composer-php if-statement

Quick Fix: Use the ternary operator ?: to write an inline if-else statement.

For example:

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

This is equivalent to:

if ($requestVars->_name == '') {
    echo $redText;
} else {
    echo '';
}

The Problem:

In PHP, writing a concise one-line if statement similar to JavaScript’s var foo = true; foo && doSomething(); is not straightforward. This problem arises when you want to conditionally add a class to an HTML element, keeping the embedded PHP minimal for readability.

The Solutions:

Solution 1: Utilize Ternary Operator ?:

To simplify the if statement within the HTML, use the ternary operator (?:). The syntax is as follows:

(condition) ? (true_value) : (false_value);

In your specific case, you can rewrite the code as:

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

This accomplishes the same as the original if statement, but with a cleaner and more concise syntax.

Solution 2: 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: One line if statement in PHP

You can use the ternary operator to write a one-line if statement in PHP. The syntax is as follows:

condition ? value1 : value2

If the condition is true, value1 will be returned; otherwise, value2 will be returned.

For example, the following code will output "greater" if the $var variable is greater than 2, and "smaller" otherwise:

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

Solution 4: Using Ternary Operator

In PHP, PHP’s ternary operator, which was introduced in PHP 5.3, can be used for a one-line if statement. The syntax is:

$value = $condition ? $if_true : $if_false;

For example:

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

The equivalent if statement would be:

if ($user->is_logged_in()) {
  $message = 'Hello ' . $user->get('first_name');
} else {
  $message = 'Hello Guest';
}

Solution 5: Minimalist PHP text output and ternary operator

PHP provides a minimalistic text output syntax that allows you to embed PHP code within HTML directly:

HTML stuff <?php echo $some_string; ?> HTML stuff

This works identically to using <?php echo $some_string; ?>.

Additionally, PHP features a ternary operator that allows conditional statements to be written in a more concise way:

(condition) ? (do_something_when_true) : (do_something_when_false);

In your specific case, you can rewrite your code as follows:

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