PHP中的$ variable OR $ variable = $ variable

时间:2016-05-28 21:45:25

标签: php variables syntax

这是函数中的独立表达式:

$var OR $var = $var

这个表达到底是做什么的?

以前从未见过这个,但找不到答案,因为我不知道这是怎么回事。

代码本身来自:Сodeigniter Template on Github

public function build($view, $data = array(), $return = FALSE)
{
    // Set whatever values are given. These will be available to all view files
    is_array($data) OR $data = (array) $data;
    // Merge in what we already have with the specific data
    $this->_data = array_merge($this->_data, $data);

...

1 个答案:

答案 0 :(得分:3)

给出像你这样的表达

is_array($data) OR $data = (array) $data;

我们首先检查http://php.net/operators.precedence上的优先级表。我们看到=高于OR。因此该行等于:

is_array($data) OR ($data = (array) $data);

接下来,我们必须检查表的关联性。 or是关联的,因此会检查is_array($data)。如果返回trueor表达式整体返回true,则不会发生其他任何事情。

如果is_array($data)返回false,我们必须进一步评估,因此$data = (array) $data会被执行。

最后,这是一种“聪明”的写作方式

if (!is_array($data)) {
    $data = (array) $data;
}

实际上在这个特定情况下我们也可以只写

$data = (array) $data;

如果(array)已成为数组,那么$data强制转换为无操作。