php $a && $b = $c 这种语法我想打死你!

本文解析了一种PHP中的奇特写法,通过分析$a&&$b=$c与$a||$b=$c等表达式的运行机制,解释了其背后的逻辑运算与赋值规则,并提供了几个实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人做php有一段时间了,最近又看到之前的一个奇葩写法,居然忘了,不懂意思!于是重新研究了下!

$a = 1;$b = 2;$c = 3;
$a && $b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
这样是
a:1 b:3 c:3
$a = 0;$b = 2;$c = 3;
$a && $b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
这样是
a:0 b:2 c:3
解析:
1:  && 和赋值运算符“=”的优先级是&&优先级高,但是加绿的写法中并不是 $a和$b先做与运算然后 =$c,这么理解相当于 1=$c, 而 1=$c这样的写法显然是错误的,你想过1的感受吗!不管$c是什么都要强加给她!她还是个孩子啊!看看她笔直的身材,要是S型就好了.--!
2: 这种另类的写法正确的理解方式为:
$a代表字符a, $b代表字符b
$a && $b 代表字符a与字符b进行逻辑与运算
&&与运算,同真时结果为真,再执行赋值语句$b = $c.否则结果为假


理解之后我们和博主肾大叔在做一道题吧!
第1题:
$a = 1;$b = 2;$c = 3;
$a ||$b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
这样是?
第2题:
$a = 0;$b = 2;$c = 3;
$a || $b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
这样是?
第3题:
$a = 0;$b = 0;$c = 5;
$a &||$b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
这样是?

对了,不要问我为什么是呼伦贝尔草原绿!  嘿嘿!

<think>嗯,用户问的是PHP语法中一个表达式的结果,具体是$b=10; $c=20; $a=$b>$c?5; 这里a的输出是什么。首先我需要确认用户提供的代码是否正确,以及PHP中三元运算符的使用方式。 首先,用户写的代码结构看起来有点问题。通常PHP的三元运算符是 condition ? expr1 : expr2,也就是说如果条件为真,返回expr1,否则返回expr2。但用户写的是$a=$b>$c:5;,中间好像漏掉了问号和另一个表达式。正确的应该是$a = $b > $c ? 5 : 或者后面还有一个值,比如默认值。例如,正确的语法应该是$a = $b > $c ? 5 : something;。但用户可能漏掉了后面的部分,或者在输入时格式有误。 然后,根据用户提供的代码,$b=10,$c=20,所以比较$b>$c的结果是false,因为10不大于20。这时候,如果三元运算符缺少了后面的部分,PHP会如何处理呢?在PHP中,如果三元运算符缺少第三个参数,会导致解析错误,也就是语法错误。比如,写成$a = $b > $c ? 5; 这样的语句,PHP在解析时会报错,因为预期有一个冒号后面的表达式。 不过用户写的代码是$a=$b>$c:5;,中间用了冒号而不是问号和冒号的结构。这可能是一个笔误,或者用户混淆了三元运算符的语法。正确的三元运算符应该是条件 ? 真时执行 : 假时执行,所以用户可能在问号和冒号的位置上有错误。例如,正确的应该是$a = $b > $c ? 5 : 其他值;。而用户可能把问号写成了分号,或者结构有误。 因此,用户提供的代码在PHP中实际上是无法运行的,因为语法错误。PHP解释器会抛出解析错误,指出语法错误的位置。所以在这种情况下,变量$a不会被正确赋值,反而会导致脚本终止执行,如果没有错误处理的话。 不过,也有可能用户写的是$a = $b > $c ? 5 : ; 但是漏掉了后面的值,或者可能用其他方式。例如,在PHP 7+中,有一个空合并运算符,但那是??,而这里的情况不同。或者用户可能使用三元运算符的简写,但PHP不支持省略假值部分,必须要有完整的三个部分:条件、真值结果和假值结果。 总结来说,用户提供的代码存在语法错误,正确的三元运算符结构需要三个部分,而用户只提供了两部分,并且可能符号使用错误。因此,当执行这段代码时,PHP会报错,导致$a无法正确输出,程序终止。</think>在PHP中,用户提供的代码存在语法错误。让我们逐步分析: 原始代码: ```php $b = 10; $c = 20; $a = $b > $c : 5; ``` 错误分析: 1. **三元运算符格式错误** PHP的三元运算符正确格式是: `条件 ? 真时返回值 : 假时返回值` 而代码中缺少问号 `?` 且符号顺序错误 2. **正确写法应为**: ```php $a = ($b > $c) ? 5 : [缺省值]; ``` 但用户未提供假值(`[缺省值]`部分),这会导致语法错误 💡 若用户意图是: ```php $b = 10; $c = 20; $a = ($b > $c) ? 5 : 0; // 补充假值 ``` 则输出结果: `$a` 的值为 `0`,因为 `10 > 20` 为 `false` 📌 最终结论: 原代码因语法错误无法执行,修正后根据逻辑关系,输出结果取决于三元运算符的完整实现。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值