Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variable assignment using logical operators in PHP

I've been trying to replicate short circuit evaluation in javascript for assignment.

E.g. in Javascript

var myObject = {foo: 'bar'};
// if myObject is undefined then assign an empty array
var obj = myObject || [];

obj will now reference myObject

I tried to replicate this in PHP and found that it just turns it into an expression and returns true or false.

I could do this in PHP like this:

$get = $this->input->get() ? $this->input->get() : array();

The problem with this is I don't know what $this->input->get() is doing behind the scenes so it's not efficient to call the method twice.

So I got creative and found a solution doing it as follows:

// $this->input->get() could return an array or false
$get = ($params = $this->input->get() and $params) ? $params : array();

Problem with this is it may confuse me in the future and it may not be very efficient.

So is there a better way in PHP to assign a variable in a one line expression like this or should I just stick to:

$get = $this->input->get();
if (!$get) {
   $get = array();
}
like image 487
Seain Malkin Avatar asked Dec 19 '13 12:12

Seain Malkin


1 Answers

Since PHP 5.3, which you are hopefully using as anything else is ancient, there's the ternary ?: operator without the middle part (so, the "binary operator"...?):

$get = $this->input->get() ?: array();
like image 157
deceze Avatar answered Sep 28 '22 15:09

deceze