今天早上,在編輯我們的CRON編輯器時,突然無法運行,我發現了一個奇怪的現象,我無法真正解釋。希望這裏有人能夠啓發我。0 == *評估結果爲true,0 === *評估結果爲false
假設有人可以回答這個沒有任何上下文,我的問題本質上是「爲什麼0 == *評估爲真?」
詳細
我們存儲在MySQL表中的所有活動的cron作業的細節。字段分鐘,小時,天和月的類型爲varchar
,默認爲「*」。編輯CRON作業時,我們有一個選擇應該從一個取出的行中選擇當前值,標記如下$CRON
,後面是一個示例。
陣列([CRONID] => 10 [分鐘] => 21 [小時] => 6 [天] => * [個月] => * [平日] => * [文件] => CRON_Prop_44 .PHP [狀態] => 1 [CreateBy] => 128 [CREATEDATE] => 2014年2月20日[ChangeBy] => 128 [CHANGEDATE] => 2014年2月20日)
破碎選擇
以下操作將生成一個選定星期日作爲選定選項。 Inspector顯示選項值=「*」和選項值=「0」。
<select name="Weekday">
<option value="*" <?php if ($CRON['Weekday'] == "*") { echo "selected";} ?> >* - Every day</option>
<?php
$x = 0;
while ($x < 7) {
switch ($x) {
case 0:
$dayname = "Sunday";
break;
case 1:
$dayname = "Monday";
break;
case 2:
$dayname = "Tuesday";
break;
case 3:
$dayname = "Wednesday";
break;
case 4:
$dayname = "Thursday";
break;
case 5:
$dayname = "Friday";
break;
case 6:
$dayname = "Saturday";
break;
}
?>
<option value="<?php echo $x; ?><?php if ($CRON['Weekday'] == $x) { echo "selected";} ?> ><?php echo $dayname; ?></option>
<?php
$x++;
}?>
那個星期天也被選中,這一事實使我相信,0 == *
是真的。我可以通過添加===
比較運算符而不是==
來達到上述預期效果,但我不明白爲什麼。是否與開關有關?選項值=「0」?或者,如標題所示,那0 == *
是真的嗎?
的(排序)功能的選擇
我認爲高於前人的代碼是有點亂,所以目前我在做以下。但是,將===
更改爲==
僅導致選擇星期日。
<select name="Weekday">
<option value="*" <?php if ($CRON['Weekday'] == "*") { echo "selected";} ?> >* - Every day</option>
<?php
$days = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
$x = 0;
while ($x < 7) {
echo '<option value="' . $x . '" ' . (($CRON['Weekday'] == $x) ? 'selected' : "") . '>' . $days[$x] . '</option>';
$x++;
}
?>
</select>
如果你已經穿了這個帖子的末尾,請告訴我,我缺少的是什麼?
Ahhhh我明白了,謝謝。 – jboneca