今天练习时遇到的,我把出错代码提取出来,如下:
<?php
$entry = "how are you.jpg";
$extensions = ".jpeg";
$compare = stristr($entry, $extensions);
if(strlen($compare) == strlen($entensions))
{
echo "into";
}
?>在这段代码中,变量compare的值输出为空,用strlen求值为0,extensions用strlen求值为5,如此,肯定进不了if里面,而事实是,strlen($compare) == strlen($extensions)的结果为真!!!
抓狂了,求高人为我指点迷津,拜谢!!!

解决方案 »

  1.   

    $entry = "how are you.jpg";
    $extensions = ".jpeg";
    $compare = stristr($entry, $extensions);
    var_dump($compare); //false
    if(strlen($compare) == strlen($entensions)) { //这里是一个巧合,正好都是5个字符,所以表达式的值为true
    echo "into";
    }//修改
    if ($compare && strlen($compare) == strlen($entensions)) echo 'into';
      

  2.   

    $compare = stristr($entry, $extensions);  这里错误,stristr()函数的用法你可能没搞清楚,。 
      

  3.   


    在这里$compare中的值实际是false,那么strlen()这个函数也能对bool类型进行求值?为什么strlen($compare)的值为0呢?
    你说那是一个巧合,都是5个字符,但是if中strlen($compare)和strlen($entensions)的输出分别为0和5,我把$extensions改了长度,结果还是一样,这是为什么呢?
      

  4.   

    本帖最后由 xuzuning 于 2011-08-08 07:12:09 编辑