这句话是什么意思?

时间:2010-01-08 12:02:03

标签: php operators

虽然

$w is an Array ( [0] => 4, [1] => 6 )

这句话意味着什么:

$day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7);

请帮忙。除了if或while语句之外,我还没有看到||运算符。谢谢。

编辑01:

这是原始函数,用于查找日期范围内特定日期的编号:

// 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));
}

这不是我创造的。但是我想编辑这个函数,因为当结束日是星期六时,它也会考虑下面的星期日,这是错误的。

4 个答案:

答案 0 :(得分:7)

如果以下四个子表达式中的任何一个为true,它只是一个返回true的复合布尔表达式:

  • $day == $w[0]
  • $day == $w[1]
  • $day < ((7 + $w[1] - $w[0]) % 7)

答案 1 :(得分:4)

在你的一条评论中,你的布尔表达式被添加为整数10

如果将布尔值转换为整数,则FALSE获取0TRUE获得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