在下面的情况下strpos实现有什么问题吗?

时间:2014-03-01 07:24:38

标签: php string if-statement strpos

我有一个包含逗号分隔字符串的变量。这是通过使用implode()函数从数组元素动态生成的。有时它不包含任何内容,有时它包含由逗号分隔的1/2/3/4字符串。我想检查一下这个以逗号分隔的字符串中是否存在stirng Other,如果它存在,则执行内部写入的命令if。但我面临的一个问题是,尽管山雀存在,但它从未在逗号分隔值中检测到字符串"Other"。有人可以帮我这方面吗? 供您参考以下是我的代码:

$form_data['que_issue'] = implode(",", $request['que_issue']);

if(strpos($form_data['que_issue'],"Other")) { 
    echo "In If"; 
    die;
    if(!$this->mValidator->validate($form_data['que_issue_comment'], "required", "true"))
        $this->mValidator->push_error($errors_msgs['que_issue_comment_blank'], 'que_issue_comment');
    elseif(!$this->mValidator->validate($form_data['que_issue_comment'], 'maxlength', '100'))
        this->mValidator->push_error($errors_msgs['que_issue_comment_length_invalid'], 'que_issue_comment');
} else
    echo "In a else"; 
die;//Its always going in else part only

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果在字符串的开头匹配字符串,

strpos将返回0。但是0被PHP解释为假。

总是查看文档,看看方法“失败”时的具体返回类型/值是什么,并与之进行比较。在这种情况下

if(strpos($form_data['que_issue'],"Other") !== false)

答案 1 :(得分:1)

你应该尝试这样的事情

if (strpos($form_data['que_issue'],'Other') !== false) {