为什么是按位或 | 而不是逻辑或 ||

来源:2-18 文件压缩与解压缩操作

a_agiao

2019-06-08 10:58:01

首先,| 和 || 我都试了,都能正常运行。只是想要了解一下具体的原因。


 |  是按位比较,


ZipArchive::CREATE 的值是 1,

ZipArchive::OVERWRITE 的值是8,


那么 


$zip->open($zipFileName, ZipArchive::CREATE | ZipArchive::OVERWRITE)


给open传第二个参数的值不就是9了嘛,为什么还能执行呢?


是因为PHP语法就这么规定的么?



按我的理解应该用 || 才符合正常思维。


ZipArchive::CREATE || ZipArchive::OVERWRITE


|| 有短路的功能,如果CREATE了就不会OVERWRITE,反之OVERWRITE。

写回答

3回答

好帮手慕查理

2019-06-20

您好,open第二个参数为9时表示的是ZipArchive::CM_DEFLATE64。所以设置为9时PHP自动转换为了ZipArchive::CM_DEFLATE64运行,因此是可以成功的。

0

好帮手慕查理

2019-06-10

您好,不是很理解同学的意思,同学可以把自己测试的代码全部反馈,以便根据同学的代码理解。

第二个参数为文件存在则覆盖,不存在则创建。

http://img.mukewang.com/climg/5cfdbd2a00018d0110220450.jpg

祝学习愉快!

0

好帮手慕查理

2019-06-08

您好,可以理解为满足ZipArchive::CREATE 或者 ZipArchive::OVERWRITE都是可以的。

$x || $y    如果 $x 和 $y 至少有一个为 true,则返回 true。    

$a | $b    Or(按位或)    将把$a和$b中任何一个为 1 的位设为 1。

祝学习愉快!

0
h_agiao
h 抱歉,老师,你的这个解释不是我想要的,你只是说明了 | 和 || 的意思,这些基础的我是知道的,也不是我问的内容。。可能没理解我的问题,我问的是为什么传的值是9也能正常执行?
h019-06-08
共1条回复

0 学习 · 4928 问题

查看课程