Проверьте значение в строке CSV

Я пытаюсь проверить значение в заданном списке значений 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>";
}
}

0

Решение

Этот код не будет работать, как вы думаете. День 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>";
}
}

демонстрация

1

Другие решения

$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/>";
}
}

Пример (использует \ n вместо <бр />)

2

Если вы абсолютно хотите, чтобы это работало таким образом (в случае, когда вы только что привели пример, который не будет работать с разнесением), вы можете просто набрать свой тип $x в строку при вызове вашей функции:

if(checkDay((string) $x, $string)){
1
По вопросам рекламы [email protected]