php中函数 isset(), empty(), is_null() 的区别,boolean类型和string类型的false判断
实际需求:把sphinx返回的结果放到ssdb缓存里,要考虑到sphinx开始没有数据,挂掉后恢复的情况。
开始实用empty函数发现sphinx挂掉后返回的内容为空,sphinx恢复后也一直进入不了,后面打印出为NUll值加上is_null判断还是不行,如果sphinx为空,ssdb会返回一个false的字符串,不是boolean类型的,empty函数和is_null函数都返回true,所以还必须加上个!='false' 的判断才行。
实战代码:
$ssdb = new SimpleSSDB(REDIS_HOST,REDIS_PORT); $key = SITE_DOMIAN.'articles'.$page_size.$page.md5($keyword); // print_r($key);
// var_dump($articles);
// var_dump(gettype($articles));
$articles = $ssdb->get($key); if(empty($articles) || is_null($articles) || $articles=='false'){ // print_r('into sphinx...'); $cl = new SphinxClient ();
下面是一个比较详细的php类型对应的返回值
更多详情的可参考:http://php.net/manual/en/types.comparisons.php
总结:当结果不符合预期的时候,需要多打印出相关参数来验证代码是否正确,需要打印类型和值出来进行测试,然后查对照表确定。