![](/img/trans.png)
[英]Insert Multiple sql statements in php from an array from for loop or foreach
[英]Multiple if/then statements with an array (php)
簡短版:我想在if / then語句中創建多個條件,這些條件都需要得到滿足。 這些條件之一是數組。 問題:它忽略了我的最終條件/數組。
長話短說:我運行的游戲帶有奇怪的日歷系統,見: http : //www.beqanna.com/forum/bqcalendar.php 。 我試圖在左側顯示“當前季節”的字樣顯示當前季節。 我在理解“月份”時遇到很多問題。
$d = date('d'); $m = date('m'); $season = ''; If ($d > '1' && $d < '15' && ($m == '01' or '03' or '05' or '07' or '09' or '11')) { $season = 'Winter'; } If ($d > '16' && $d < '18' && ($m == '01' or '03' or '05' or '07' or '09' or '11')) { $season = 'Spring'; } If ($d > '19' && $d < '23' && ($m == '01' or '03' or '05' or '07' or '09' or '11')) { $season = 'Spring, Birthing'; } If ($d > '24' && $d < '31' && ($m == '01' or '03' or '05' or '07' or '09' or '11')) { $season = 'Spring'; } If ($d > '1' && $d < '15' && ($m == '02' or '04' or '06' or '08' or '10' or '12')) { $season = 'Summer'; } If ($d > '16' && $d < '18' && ($m == '02' or '04' or '06' or '08' or '10' or '12')) { $season = 'Autumn'; } If ($d > '19' && $d < '23' && ($m == '02' or '04' or '06' or '08' or '10' or '12')) { $season = 'Autumn, Breeding'; } If ($d > '24' && $d < '31' && ($m == '02' or '04' or '06' or '08' or '10' or '12')) { $season = 'Autumn'; }
我嘗試過的其他事情-$ m == array(01,03,05,07,09)$ m ==(%2)-在偶數個月中,我嘗試將我的'移動到整個事物上,並減去()。 我的最終結論是-無論出於何種原因,它都沒有“監聽”該月。 像現在一樣,它應該說“ winter”,但它始終顯示“ Summer”,這是1到15日期(正確),但月份錯誤。
有什么建議么?
首先,您的第一個表達式將始終返回true。
&& ($m == '01' or '03' or '05' or '07' or '09' or '11')
// $m == 1 OR tru or true... and becomes false or true or true
您可以使用in_array
。
這是您需要的代碼。
<?php
$d = (int)date('d');
$m = (int)date('m');
$season = '';
//echo $d . ' ' . $m . PHP_EOL;
$winterMonths = [1,3,5,7,9,11];
$summerMonths = [2,4,6,8,10,12];
If ($d > 1 && $d < 15 && in_array($m,$winterMonths)) {
$season = 'Winter';
} else if ($d > 16 && $d < 18 && in_array($m,$winterMonths)) {
$season = 'Spring';
} else if ($d > 19 && $d < 23 && in_array($m,$winterMonths)) {
$season = 'Spring, Birthing';
} else if ($d > 24 && $d < 31 && in_array($m,$winterMonths)) {
$season = 'Spring';
} else if ($d > 1 && $d < 15 && in_array($m,$summerMonths)) {
$season = 'Summer';
} else if ($d > 16 && $d < 18 && in_array($m,$summerMonths)) {
$season = 'Autumn';
} else if ($d > 19 && $d < 23 && in_array($m,$summerMonths)) {
$season = 'Autumn, Breeding';
} else if ($d > 24 && $d < 31 && in_array($m,$summerMonths)) {
$season = 'Autumn';
}
echo $season;
希望能幫助到你。
您忘記了else
語句。
你目前檢查日期高於 1
,並 在 15
。 所以,你的程序將不會為日期一樣工作15, 16, 18, 19, 23, 24, 31
。
您必須將運算符>
更改為>=
,因此您將檢查日期是否大於或等於 if。
例如,您的舊代碼:
if ($d > 1 && ....)
如果您的日期為1,則不會進行此操作。
新代碼:
if ($d >= 1 && ....)
如果您的日期為1, 則將進入該日期。
這里是完整的例程:
$d = date('d');
$m = date('m');
$season = '';
$winterMonths = array(1,3,5,7,9,11);
$summerMonths = array(2,4,6,8,10,12);
if ($d >= 1 && $d <= 15 && in_array($m, $winterMonths)) {
$season = 'Winter';
} else if ($d >= 16 && $d <= 18 && in_array($m, $winterMonths)) {
$season = 'Spring';
} else if ($d >= 19 && $d <= 23 && in_array($m, $winterMonths)) {
$season = 'Spring, Birthing';
} else if ($d >= 24 && $d <= 31 && in_array($m, $winterMonths)) {
$season = 'Spring';
} else if ($d >= 1 && $d <= 15 && in_array($m, $summerMonths)) {
$season = 'Summer';
} else if ($d >= 16 && $d <= 18 && in_array($m, $summerMonths)) {
$season = 'Autumn';
} else if ($d >= 19 && $d <= 23 && in_array($m, $summerMonths)) {
$season = 'Autumn, Breeding';
} else if ($d >= 24 && $d <= 31 && in_array($m, $summerMonths)) {
$season = 'Autumn';
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.