javascript - PHP什么情况下可以写: $a = $a or $b;
因为js经常有这样的写法,但是我在php下试了却不行,$a
为null
,false
,-1
时都无效。
现在用的比较啰嗦的写法:
$a = $a?$a:$b; $a = is_*($a)?$a:$b;
但是如何满足这样的写法:
$a = $a or $b;
回复内容:
因为js经常有这样的写法,但是我在php下试了却不行,$a
为null
,false
,-1
时都无效。
现在用的比较啰嗦的写法:
$a = $a?$a:$b; $a = is_*($a)?$a:$b;
但是如何满足这样的写法:
$a = $a or $b;
PHP是不支持$a = $a || $b;
这种赋值写法的,这样写返回的是一个或运算的布尔值。(优先级请阅读 @qinjianxiang 同学的答案 )
但是,对于PHP本身提供的三元运算(expr1) ? (expr2) : (expr3)
从PHP5.3开始已经可以省略expr2,因此你可以简写成下面这样:
<code>$a = $a ?: $b; </code>
简洁程度应该跟JS里面的a = a || b
差不多吧? 但是要注意:PHP中 0、null、''(空字符串)都是==false的。
又回到了一年一度,一月一次不得不提及的PHP运算符优先级问题了!回答这个问题之前,不得不把我之前回答的一个问题链接给题主看看:PHP陷阱?
看了上面的链接你可能就会明白,实际上呢你写的这句话在PHP中根本不会完成你想要的效果,如果你还不明白的话我给你加上括号吧:
<code>($a = $a) or $b; </code>
怎么样看懂了吧,从左往右读,赋值的操作比或操作优先执行,最后这句话被解析成了一个或操作,然后左边是一个将本身赋值给本身的操作,必然为true
所以你会发现$a
的值永远是不会变的。
最后是一句题外话,PHP目前我的认识里头好像没办法写成这种形式应该,如果有的话请告知我,谢谢!
PHP里的 || 和 or 操作符返回值都是布尔值,所以,不可能实现像Javascript和Perl里那样的a = a || b的效果了。
最接近最简洁的写法便是?:操作符:
<code>$a = $a ? $a : $b; </code>
那么$a = $a or $b到底返回什么呢?且看一段测试代码:
<code><?php $a = 0 || false; var_dump($a); $a = 0 or false; var_dump($a); </code>
它将输出:
bool(false)
int(0)
为什么输出不一样?因为 || 和 or 两个操作符的优先级不一样:
- ||优先级比=高,所以,$a = $a || $b,等同于$a = ($a || $b),是先拿$a, $b求或,得到一个boolean,再把这个boolean赋值给$a
- or优先级比=低,所以,$a = $a or $b,等同于($a = $a) or $b,先执行$a = $a,再把$a的值和$b执行or操作,但操作结果不赋值给任何变量,所以你观察不到$a的值被改变
PHP操作符优先级:http://www.php.net/manual/en/language.operators.precedence.php
挖坟的问题了,一直忘了结贴,现在自问自答,就当给sf做个seo吧.
楼上说的都对,现在PHP7开始有了??
操作符就是做这个事情的.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

Pythonempowersbeginnersinproblem-solving.Itsuser-friendlysyntax,extensivelibrary,andfeaturessuchasvariables,conditionalstatements,andloopsenableefficientcodedevelopment.Frommanagingdatatocontrollingprogramflowandperformingrepetitivetasks,Pythonprovid
