这是函数中的独立表达式:
$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);
...
答案 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)
。如果返回true
,or
表达式整体返回true
,则不会发生其他任何事情。
如果is_array($data)
返回false
,我们必须进一步评估,因此$data = (array) $data
会被执行。
最后,这是一种“聪明”的写作方式
if (!is_array($data)) {
$data = (array) $data;
}
实际上在这个特定情况下我们也可以只写
$data = (array) $data;
如果(array)
已成为数组,那么$data
强制转换为无操作。