为什么是按位或 | 而不是逻辑或 ||
来源: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回答
您好,open第二个参数为9时表示的是ZipArchive::CM_DEFLATE64。所以设置为9时PHP自动转换为了ZipArchive::CM_DEFLATE64运行,因此是可以成功的。
好帮手慕查理
2019-06-10
您好,不是很理解同学的意思,同学可以把自己测试的代码全部反馈,以便根据同学的代码理解。
第二个参数为文件存在则覆盖,不存在则创建。
祝学习愉快!
好帮手慕查理
2019-06-08
您好,可以理解为满足ZipArchive::CREATE 或者 ZipArchive::OVERWRITE都是可以的。
$x || $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
$a | $b Or(按位或) 将把$a和$b中任何一个为 1 的位设为 1。
祝学习愉快!
相似问题
回答 1