检查csv字符串中的值

时间:2014-09-16 14:00:09

标签: php 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>";
  }
} 

3 个答案:

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

Example (uses \n instead of <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>";
  }
} 

Demo

答案 2 :(得分:1)

如果你绝对希望它以这种方式工作(如果你只是给出了一个不能用于爆炸的例子),你可以在调用你的时候将你的$x强制转换成字符串。功能:

if(checkDay((string) $x, $string)){