我正在尝试检查给定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 :(得分:2)
$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/>";
}
}
答案 1 :(得分:1)
该代码不会像你想象的那样工作。如果3
位于您的日期列表中,131
天将返回true。
更好的方法是将日期放入数组并检查您的日期是否为该数组中的值。 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>";
}
}
答案 2 :(得分:1)
如果你绝对希望它以这种方式工作(如果你只是给出了一个不能用于爆炸的例子),你可以在调用你的时候将你的$x
强制转换成字符串。功能:
if(checkDay((string) $x, $string)){