
提供以下函数
empty,is_null,isset 或你对变量自信的话直接使用if($var){为真}else{为假},不推荐这种方式,$var为0时是允许的值但结果返回假
很简单,比如有一个名叫data的对象,对象一旦被创建就不是空的,我们可以判断对象类是否有我们需要的数据来判断它是不是空,比如,我的data对象里有个变量name,如果没有这个name,我就认为它是空,
if(isset($data->name)){
echo:"这不是空对象"
}else{
echo:"一个空对象"}
function dir_list($path, $exts = '', $list = array()) {
$path = dir_path($path);
$files = glob($path'');
if ($files) {
foreach($files as $v) {
if (empty($exts) || pathinfo($v, PATHINFO_EXTENSION) == $exts) {
$list[] = $v;
if (is_dir($v)) {
$list = dir_list($v, $exts, $list);
}
}
}
}
return $list;
}
然后看返回值是什么,自己判断就行了
一、for循环
最简单也是最直接的方法,用for循环来遍历数组。对于已知维数的数组可以判断,但如果是未知的多维数组,该怎么办?
二、implode();
用implode()将数组输出为字符串,判断输出的字串是否为空。初看上去似乎是个不错的方法,可惜跟上一点一样,对于二维以上数组就不行了。举个例子:
$arr= array(array(),array(),array());
$str = implode(',',$arr);
if(empty($str)) echo "空";
else echo "非空";
很明显$arr是个含有三个空数组的二维数组,应该也算是空的,可是输出的确是非空。判断失败。
三、count();
不得不承认,我最先想到的也是这个函数,网上也有好多网友把这个当答案,并以为已经解决问题。可是请看下面的例子:
$arr= array("","","");
echo count($arr);
四、in_array('', $arr));
不多说,还是看例子:
$arr= array("d","s","");
echo in_array('', $arr);
这个只能说明数组中有空的元素,不能证明数组是空的。很明显也不行
五、empty();
这个cpyeh觉得跟前面几种方法差不多
$arr= array("","","");
if(empty($arr)) echo "空";
else echo "非空";
结果还是非空
可以在以上例子上加一句print_r($arr);看看
基本上cpyeh能想到的加上网上找到的也就以上这些,不明白的是网上居然有人会提到is_array(),可能是对php还不是很了解,需要多翻翻手册。很遗憾最终还是找不到一个完美的解决方法,不过对于一般的应用,第一种或第二种应该可以满足了,cpyeh选了方便的第二种。如果对以上例子有疑问欢迎留言在此互相交流。
后计:
如果判断一个二维数组可以这样,同时干掉那些空的:
$this->dataObj->getTotalScore(&$resultinfo,$uids);
$judge = implode("",$resultinfo);
if(!empty($judge))//数组不为空
{ //去掉数组键值为空
foreach($resultinfo as $key =>$getoutvisnull)
{
if(empty($getoutvisnull))
{
unset($resultinfo[$key]);
}
}
$allscorearray[] = $resultinfo;
}
isset()函数检测变量是否设置,empty()函数检测变量是否为空
$_POST取得post数据值(一般用于接收表单发送来的值),txtUn一般是表单元素中name属性值
上面的代码可以这么理解
如果 接收表单值txtUn已经设置并且接收到的值不为空
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)