Я пытаюсь проверить значение в заданном списке значений CSV. У меня есть следующий код, который в теории должен работать. Но по какой-то причине его нет. Не уверен, что я делаю не так здесь. Может кто-нибудь, пожалуйста, помогите.
$string = "5,9,10,13";
function checkDay($day, $list){
if (strpos($list, $day) !== FALSE) {
return TRUE;
} else {
return FALSE;
}
}
for ($x=0; $x<=15; $x++) {
if(checkDay($x, $string)){
echo "There is an event on " . $x . "<br>";
}else{
echo "There is NO event on " . $x . "<br>";
}
}
Этот код не будет работать, как вы думаете. День 3
вернет истину, если 131
в вашем списке дат.
Лучший способ сделать это — поместить ваши даты в массив и проверить, является ли ваш день значением в этом массиве. Это заявление if / else также не нужно.
$string = "5,9,10,13";
function checkDay($day, $list){
$dates = explode(',', $list);
return in_array($day, $dates);
}
for ($x=0; $x<=15; $x++) {
if(checkDay($x, $string)){
echo "There is an event on " . $x . "<br>";
}else{
echo "There is NO event on " . $x . "<br>";
}
}
$string = "5,9,10,13";
$days = explode(',', $string);
for ($x = 0; $x <= 15; ++$x) {
if (in_array($x, $days)) {
echo "There is an event on $x.<br/>";
} else {
echo "There is NO event on $x.<br/>";
}
}
Если вы абсолютно хотите, чтобы это работало таким образом (в случае, когда вы только что привели пример, который не будет работать с разнесением), вы можете просто набрать свой тип $x
в строку при вызове вашей функции:
if(checkDay((string) $x, $string)){