tlpjeq
Last Updated: February 25, 2016
·
3.111K
· otar
F898b4e1ba5b8ed93f643859b9d55cd6

PHP logical operators as expressions

I've successfully used this method to simplify code in various projects. Depends on case, but for most simple if/else conditionals I prefer to use this method (saves some lines).

Good

<?php

$array = [1, 2, 3, 4, 5];
if (!empty($array))
{
    do_something();
}

Better

<?php

$array = [1, 2, 3, 4, 5];
empty($array) OR do_something();

More Examples

<?php

// $array['item'] is declared, lowercase it
isset($array['item']) AND $array['item'] = strtolower($array['item']);

// $array['item'] is NOT declared. Declare and assign a default value.
isset($array['item']) OR $array['item'] = 'Hello World!';

NOTE: use print() instead of echo(). print() construct behaves like a function, echo() does not.

<?php

$check = do_check();

// Doesn't work
$check AND echo 'Hello World!';

// Works
$check AND print 'Hello World!';

?>

Compare this case:

<input type="text" value="<?php $check AND print 'Hello World!' ?>" />

With using ternary operator:

<input type="text" value="<?php echo $check ? 'Hello World!' : NULL ?>" />
Say Thanks
Respond

7 Responses
Add your response

7253
Jezenthomas 1356881796 600

This is really great. Thanks!

over 1 year ago ·
7264
Be9e4cbcfa96b7e4ad4bc28c88cfdb2b

Yuck! Awful!

over 1 year ago ·
7333
I 5975f6 1314372

Using the operators this way will hinder the maintainability of the code.I'm sure it has it's place, but I don't think simplifying code is it.

over 1 year ago ·
7343
F898b4e1ba5b8ed93f643859b9d55cd6

Once again, it depends where you'll use this approach. For me it was a matter of time to get used to it.

over 1 year ago ·
7600

nice syntax, but imho it's not really clear at first sight. An if is better.
I really love it in the template....too bad I'm not using php as a template language anymore :)

over 1 year ago ·
7604
Dccdb9d12f81d935afd17dd59d28349c

Or you could just use a one-line if which is more clear and can fit just as well in templating.

if (!empty($array)) do_something();
over 1 year ago ·
7605
Bsugxpza

This is just an example of short-circuit evaluation in php, but as everyone has been saying, this will just damage the readability of your code, and also steps over the understanding of it. The boolean operators are intended to be used in conjunction with boolean evaluations, and not all of your operations evaluate to boolean, so they feel a bit out place. I won't deny the "cleverness", but if one of the programmers on my team shows me code with this syntax I'll say "very clever, now write it again".

over 1 year ago ·