虽然
$w is an Array ( [0] => 4, [1] => 6 )
这句话意味着什么:
$day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7);
请帮忙。除了if或while语句之外,我还没有看到||
运算符。谢谢。
这是原始函数,用于查找日期范围内特定日期的编号:
// find number of a particular day (sunday or monday or etc) within a date range
function number_of_days($day, $start, $end){
$w = array(date('w', $start), date('w', $end));
return floor( ( date('z', $end) - date('z', $start) ) / 7) + ($day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7));
}
这不是我创造的。但是我想编辑这个函数,因为当结束日是星期六时,它也会考虑下面的星期日,这是错误的。
答案 0 :(得分:7)
如果以下四个子表达式中的任何一个为true
,它只是一个返回true
的复合布尔表达式:
$day == $w[0]
$day == $w[1]
$day < ((7 + $w[1] - $w[0]) % 7)
答案 1 :(得分:4)
在你的一条评论中,你的布尔表达式被添加为整数1
或0
。
如果将布尔值转换为整数,则FALSE
获取0
而TRUE
获得1
。
如果添加具有不同数据类型的变量且其中一个变量是整数,则其他变量将转换为整数,这使得:
var_dump(1+true);
// Result: int(2)
两个链接,解释了如果对不同的数据类型使用+
会发生什么,以及如果将某个数据类型转换为整数会发生什么:
http://php.net/manual/en/language.types.type-juggling.php
http://www.php.net/manual/en/language.types.integer.php#language.types.integer.casting
答案 2 :(得分:4)
$day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7);
该语句将评估(在示例中未指定任何内容)布尔值true / false。
语句按顺序有效计算
例如
true || false || false => true
false || false || false => false
这意味着如果任何“子表达式”为真,那么整个表达式将评估为true。这可以分配给变量$v = expression
,也可以在if (expression)
答案 3 :(得分:2)
||是逻辑OR运算符。有关更多信息,请参阅documentation