Home > Backend Development > PHP Tutorial > PSR-4实例中这行代码如何理解?

PSR-4实例中这行代码如何理解?

WBOY
Release: 2016-06-06 20:16:23
Original
1207 people have browsed it

PSR-4实例类实现中的loadClass()方法中的

<code>while (false !== $pos = strrpos($prefix, '\\')) 
</code>
Copy after login
Copy after login

这行代码应该如何理解?

我觉得应该是:

<code>while (false !== ($pos = strrpos($prefix, '\\')))</code>
Copy after login
Copy after login

问题已经解决:
参见 PHP运算符优先级手册中的‘Notice’:尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a

如何强制使PHP遵守约定,此问题不知有没有大神告知?

回复内容:

PSR-4实例类实现中的loadClass()方法中的

<code>while (false !== $pos = strrpos($prefix, '\\')) 
</code>
Copy after login
Copy after login

这行代码应该如何理解?

我觉得应该是:

<code>while (false !== ($pos = strrpos($prefix, '\\')))</code>
Copy after login
Copy after login

问题已经解决:
参见 PHP运算符优先级手册中的‘Notice’:尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a

如何强制使PHP遵守约定,此问题不知有没有大神告知?

就是你这么理解的。

赋值的操作符的优先级高于比较操作符的优先级,所以会先进行赋值操作。

赋值操作符的返回值就是操作符的右值。

更新:

赋值操作符的的优先级比比较操作符的优先级低,但是PHP里有特殊的语法技巧:

<code class="php">Note:
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。</code>
Copy after login
Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template