2015-01-07 4 views
0

Я хочу определить, является ли $today известным нерабочим днем ​​или праздником, сравнивая два массива и сообщая результат. Я не знаю, что принадлежит в if и elseif структур для сравнения, если переменная в массиве является матч $today:Поиск соответствия переменной в массиве

<?php 
// Date & Time 
$timeadjust = '-5 hours'; 
$today_long = date('l, d F Y', strtotime($timeadjust)); 
$today = date('m-d', strtotime($timeadjust)); 
$today_day_name = date('l', strtotime($timeadjust)); 
// Normal Non-Working Days 
$saturday = 'Saturday'; 
$sunday = 'Sunday'; 
// 2015 Holidays 
$new_years_day = '01-01'; 
$fourth_of_july = '07-04'; 
$thanksgiving = '11-26'; 
$thanksgiving_friday = '11-27'; 
$christmas_eve = '12-24'; 
$christmas = '12-25'; 
$new_years_eve = '12-31'; 
// Normal Non-Working Day Array 
$no_work = array($saturday,$sunday); 
// Holiday Array 
$holiday = array($new_years_day,$fourth_of_july,$thanksgiving,$thanksgiving_friday,$christmas_eve,$christmas,$new_years_eve); 
// Compare Today To Normal Non-Working Day & Holiday Arrays To Determine If Today Is Normal Non-Working Day Or Holiday 
if ($today_day_name = $no_work) {$operating = 'CLOSED';} 
elseif ($today = $holiday) {$operating = 'CLOSED';} 
else {$operating = 'OPEN';} 
// Display Result Of Comparison & Report Operating Status 
echo '<h3>Today is&nbsp;'.$today_long.'.&nbsp;We are&nbsp;'.$operating.'&nbsp;today!</h3>'; 
?> 
+0

Вы хотите посмотреть на ['in_array()'] (http://php.net/in_array) для этого –

ответ

1

За то, что вы делаете, вы можете использовать in_array(), который будет проверять, если значение в выбранном массиве -

// Compare Today To Normal Non-Working Day & Holiday Arrays To Determine If Today Is Normal Non-Working Day Or Holiday 
if (in_array($today_day_name, $no_work)) { 
    $operating = 'CLOSED'; 
} elseif (in_array($today, $holiday)) { 
    $operating = 'CLOSED'; 
} else { 
    $operating = 'OPEN'; 
} 

EXAMPLE

в исходном коде вы также назначения вместо тестирования -

if($foo = $bar) // one equals sign assigns 
if($foo == $bar) // two equals signs compares 
if($foo === $bar) // three equals signs tests for equivalency, does it match value and type? 

Потому что ты назначение вашего, если оператор всегда будет оценивать к истине.

+1

Это работает. Очень признателен! –

Смежные вопросы