CRON 편집기를 갑자기 실행하지 못했지만 편집자가 오늘 아침에 설명 할 수없는 기이함을 발견했습니다. 여기 누군가를 바라고 있으면 나를 계몽 할 수 있습니다.0 == * true를 평가합니다. 0 === * false로 평가합니다.
누구나 컨텍스트없이이 질문에 대답 할 수 있다면 내 질문은 본질적으로 "0 == *이 사실로 평가되는 이유는 무엇입니까?"
세부
우리는 MySQL의 테이블에 모든 활성 CRON 작업의 세부 사항을 저장합니다. 분, 시간, 일 및 월 필드의 유형은 기본값이 '*'인 varchar
입니다. CRON 작업을 편집 할 때 우리는 아래에 표시된 $CRON
이라는 레이블이 붙은 가져온 행의 현재 값을 선택해야하는 select와 그 예가 있습니다.
어레이 ([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>
이 게시물의 끝에 지속 한 경우, 내가 놓친 게 뭔지 알려주세요?
http://www.php.net/manual/en/language.types.boolean.php 그래서 더 궁금가 없어야합니다 : 그 문자열 boolean
에 캐스팅의 계약에 따라 평가하는 방법이기 때문에
아아아, 고마워. – jboneca