PHP判断数组(多维数组)值是否为空

 更新时间:2016年11月25日 15:47  点击:1604
判断数组值是否为空的方法很简单我们只要empty或=\"\"即可了,如果是二维数组或多维数组我们可以直接使用遍历来操作,下面我给大家介绍判断数组值为空的各种方法总结。

//此处,$res为数组,但是数组的维数不定,此时不能用count函数

 代码如下 复制代码

//array_filter() 将删除 $res 中所有等值为 FALSE 的条目
$filter_res = array_filter($res);

if(!empty($filter_res))
{
     //数组不为空的操作
}
else
{
    //数组为空的操作
}

PHP判断数组为空之一、for循环

最简单也是最直接的方法,用for循环来遍历数组。对于已知维数的数组可以判断,但如果是未知的多维数组,该怎么办?

(仅针对于二维数组)

 代码如下 复制代码

<?php
//上面把你要判断的数组放在这,名字是$shuzu
foreach ($shuzu as $v1)  

foreach ($v1 as $v2)  

//print "$v2";
$shunzi =$shunzi.$v2;
}
if($shunzi=="")
{
echo "数组是空的";
}
else
{
echo "数组有元素";
}
?>

count($arr),size($arr);


$arr= array("");
echo count($arr);
echo size($arr);
//输出1


多维数组值是否为空

PHP判断单值是否为空使用最为常用的empty即可,但是,在判断有键值的数组或多维数组时就会出现困难,以下就是PHP中判断数组(多维)数值是否为空的函数:

 代码如下 复制代码

class Test{
public static function array_is_null($arr = null){
if(is_array($arr)){
foreach($arr as $k=>$v){
if($v&&!is_array($v)){
return false;
}
$t = self::array_is_null($v);
if(!$t){
return false;
}
}
return true;
}elseif(!$arr){
return true;
}else{
return false;
}
}
}

本文章来给初学者介绍一个简单的php实现文件上传的程序代码,大家可拿下去供学习使用,如果放到网络上应用我们需要更多过滤来判断了。

先来看实例

 代码如下 复制代码

<?php
      
        //判断临时文件存放路径是否包含用户上传的文件
        if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){
        //为了更高效,将信息存放在变量中
        $upfile=$_FILES["uploadfile"];//用一个数组类型的字符串存放上传文件的信息
        //print_r($upfile);//如果打印则输出类似这样的信息Array ( [name] => m.jpg [type] => image/jpeg [tmp_name] => C:WINDOWSTempphp1A.tmp [error] => 0 [size] => 44905 )
        $name=$upfile["name"];//便于以后转移文件时命名
        $type=$upfile["type"];//上传文件的类型
        $size=$upfile["size"];//上传文件的大小
        $tmp_name=$upfile["tmp_name"];//用户上传文件的临时名称
        $error=$upfile["error"];//上传过程中的错误信息
        //echo $name;
        //对文件类型进行判断,判断是否要转移文件,如果符合要求则设置$ok=1即可以转移
        switch($type){
            case "image/jpg": $ok=1;
            break;
            case "image/jpeg": $ok=1;
            break;
            case "image/gif" : $ok=1;
            break;
            default:$ok=0;
            break;
        }
        //如果文件符合要求并且上传过程中没有错误
        if($ok&&$error=='0'){
            //调用move_uploaded_file()函数,进行文件转移
            move_uploaded_file($tmp_name,'up/'.$name);
            //操作成功后,提示成功
            echo "<script language="javascript">alert('succeed')</script>";
        }else{
            //如果文件不符合类型或者上传过程中有错误,提示失败
            echo "<script language="javascript">alert('failed')</script>";
        }
    }
?>
<!--设置提交文件的表单-->
<form enctype="multipart/form-data" method="post" name="uploadform">
<input type="file" name="uploadfile" value="Upload File">
<input type="submit" name="submit" value="Upload">
</form>

上面的代码完全可以工作,但实际应用中漏洞百出,让我们逐步来完善之首先,上载的文件必须有一个固定的目录保存,我们在这里用一个$UploadPath变量保存之,如$UploadPath = "/home/flier/upload/";
  或复杂一点的自动定位,如

 代码如下 复制代码
$UploadPath = AddSlashes(dirname($PATH_TRANSLATED))."\upload\";

$PATH_TRANSLATED顾名思义是当前传送目录
  我们假定以其一个名为upload的子目录来保存上载的文件。dirname函数返回其目录名,然后加上子目录名然后用一个变量$FileName保存完整的上载后文件名和路径

$FileName = $UploadPath.$UploadFile_name;
  其次,我们还想让用户得知上载文件的简要信息,如上载文件的大小if($UploadFile_size <1024) {  //上载文件大小
   

 代码如下 复制代码
$FileSize = (string)$UploadFile_size . "字节";
}
elseif($UploadFile_size <(1024 * 1024)) {
    $FileSize = number_format((double)($UploadFile_size / 1024), 1) . " KB";
}
else{
    $FileSize = number_format((double)($UploadFile_size / (1024 * 1024)), 1) . " MB";
}  

   number_format函数起到格式化输出的作用,具体用法请参照手册。下一步我们必须考虑到文件已经存在和拷贝操作失败的情况,并提供相应的提示信息if(!file_exists($FileName)){
 

 代码如下 复制代码
   if(copy($UploadFile,$FileName)) {
        echo "文件 $UploadFile_name($FileSize)上载成功!";
     }
     else {
          echo "文件 $UploadFile_name上载失败!";
     }
    unlink($UploadFile);
}
else {
     echo "文件 $UploadFile_name已经存在!";
}   

     

  然后我们应该考虑到大文件上载时容易出现超时的情况,可以用set_time_limit($TimeLimit);加大超时限制时间。

最后,把截面和实现代码综合到一个单独的文件中,为了实现这个想法,我们通过在 form中添加一个隐含值<INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1">指出当前的状态(界面或实现),以便区分对待

下面程序可用于实例应用

 代码如下 复制代码

function FileUpload( $resourceType, $currentFolder, $sCommand )
{
 if (!isset($_FILES)) {
  global $_FILES;
 }
 $sErrorNumber = '0' ;
 $sFileName = '' ;

 if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
 {
  global $Config ;

  $oFile = $_FILES['NewFile'] ;

  // Map the virtual path to the local server path.
  $sServerDir = ServerMapFolder( $resourceType, $currentFolder, $sCommand ) ;

  // Get the uploaded file name.
  $sFileName = $oFile['name'] ;
  $sFileName = SanitizeFileName( $sFileName ) ;

  $sOriginalFileName = $sFileName ;

  // Get the extension.
  $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
  $sExtension = strtolower( $sExtension ) ;

  if ( isset( $Config['SecureImageUploads'] ) )
  {
   if ( ( $isImageValid = IsImageValid( $oFile['tmp_name'], $sExtension ) ) === false )
   {
    $sErrorNumber = '202' ;
   }
  }

  if ( isset( $Config['HtmlExtensions'] ) )
  {
   if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) &&
    ( $detectHtml = DetectHtml( $oFile['tmp_name'] ) ) === true )
   {
    $sErrorNumber = '202' ;
   }
  }

  // Check if it is an allowed extension.
  if ( !$sErrorNumber && IsAllowedExt( $sExtension, $resourceType ) )
  {
   $iCounter = 0 ;

   while ( true )
   {
    $sFilePath = $sServerDir . $sFileName ;

    if ( is_file( $sFilePath ) )
    {
     $iCounter++ ;
     $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
     $sErrorNumber = '201' ;
    }
    else
    {
     move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;

     if ( is_file( $sFilePath ) )
     {
      if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] )
      {
       break ;
      }

      $permissions = 0777;

      if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] )
      {
       $permissions = $Config['ChmodOnUpload'] ;
      }

      $oldumask = umask(0) ;
      chmod( $sFilePath, $permissions ) ;
      umask( $oldumask ) ;
     }

     break ;
    }
   }

   if ( file_exists( $sFilePath ) )
   {
    //previous checks failed, try once again
    if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid( $sFilePath, $sExtension ) === false )
    {
     @unlink( $sFilePath ) ;
     $sErrorNumber = '202' ;
    }
    else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml( $sFilePath ) === true )
    {
     @unlink( $sFilePath ) ;
     $sErrorNumber = '202' ;
    }
   }
  }
  else
   $sErrorNumber = '202' ;
 }
 else
  $sErrorNumber = '202' ;


 $sFileUrl = CombinePaths( GetResourceTypePath( $resourceType, $sCommand ) , $currentFolder ) ;
 $sFileUrl = CombinePaths( $sFileUrl, $sFileName ) ;

 SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ) ;

 exit ;

本文章来给大家介绍关于php判断值是否为空实例代码,有需要了解的朋友可进入参考参考。

php实际应用中一般都是用isset()函数来做判断的。

示例如下:

 代码如下 复制代码

if( isset($_GET[’name’]) )//判断传来的值是否为空。 

       echo "值为空"; 

使用说明:

1、空值、0、false的赋值结果均被isset判为 TRUE
2、NULL将被isset判为 FALSE 
3、isset()同样适用于数组元素和对象元素的检查。若数组或对象实例未被定义,则检测其中的数组元素/对象元素将被返回false。

empty功能:检测变量是否为“空”


很简单的,给一个例子。
方法一:

 

 代码如下 复制代码
$sql = "select * form abc"
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if(empty($row))//开始判断是够为空
{
echo "null";
}
else
{
echo "not null";
}

方法二:

 代码如下 复制代码


$sql = "select * form abc"
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if(!$row)//开始判断是够为空
{
echo "null";
}
else
{
echo "not null";
}

其实mysql_fetch_array函数在使用的时候如果表是空表的话,就会返回false,这个时候$row自然没有赋


说明:值为 0 或 false 或 空字符串”" 或 null的变量、空数组、都将判断为 null
注意:与empty的显著不同就是:变量未初始化时 var == null 将会报错。

 

 代码如下 复制代码
$a = 0;
$b = array();
if ($a == null) echo '$a 为空' . "";
if ($b == null) echo '$b 为空' . "";
if ($c == null) echo '$b 为空' . "";
// 显示结果为
// $a 为空
// $b 为空
// Undefined variable: c

4. is_null功能:检测变量是否为“null”
说明:当变量被赋值为“null”时,检测结果为true
注意1:null不区分大小写:$a = null; $a = NULL 没有任何区别
注意2:仅在变量的值为“null”时,检测结果才为true,0、空字符串、false、空数组都检测为false
注意3:变量未初始化时,程序将会报错

 

 代码如下 复制代码

$a = null;
$b = false;
if (is_null($a)) echo '$a 为NULL' . "";
if (is_null($b)) echo '$b 为NULL' . "";
if (is_null($c)) echo '$c 为NULL' . "";
// 显示结果为
// $a 为NULL
// Undefined variable: c

本文章来给大家介绍关于php正则获取关键字、标题、网页描述代码,有需要了解的同学可进入参考。

获取关键字

 代码如下 复制代码


function get_keywords($html)
{
$html=strtolower($html);
preg_match("@<head[^>]*>(.*?)</head>@si",$html, $regs); 
$headdata = $regs[1];
preg_match("/<meta +name *=["']?keywords["']? *content=["']?([^<>"]+)["']?/i", $headdata, $res);
if (isset ($res)) {
$keywords = $res[1];
}
if ($keywords == "") $keywords = "无";
$keywords=replace_word(textcut($keywords,250));
$keywords=str_replace("-",",",$keywords);
$keywords=str_replace(",",",",$keywords);
$keywords=str_replace(" ",",",$keywords);
$keywords=str_replace("|",",",$keywords);
$keywords=str_replace("、",",",$keywords);
$keywords=str_replace(",,",",",$keywords);
$keywords=str_replace("<","",$keywords);
$keywords=str_replace(">","",$keywords);
return addslashes(trim($keywords));
}

获取标题

 代码如下 复制代码

function get_title($html)
{
  $html=strtolower($html);
 $title = str_replace(" - ",",",cut($html,"<title>", "</title>" ));
//if ($title == "") $title = "无标题";
if ($title) $title=replace_word(textcut($title,80));
if ($title) $title=preg_replace("/<(.*?)>/","",$title);
return addslashes(trim($title));
}

获取网页描述description

 代码如下 复制代码

function get_description($html)
{
$html=strtolower($html);
preg_match("@<head[^>]*>(.*?)</head>@si",$html, $regs); 
$headdata = $regs[1];
preg_match("/<meta +name *=["']?description["']? *content=["']?([^<>"]+)["']?/i", $headdata, $res);
      if (isset ($res)) {
       $description = $res[1];
      }
if ($description == "") $description = "无";
$description=replace_word(textcut($description,250));
$description=str_replace("-",",",$description);
$description=str_replace(",",",",$description);
$description=str_replace(" ",",",$description);
$description=str_replace("|",",",$description);
$description=str_replace("、",",",$description);
$description=str_replace(",,",",",$description);
$description=str_replace("<","",$description);
$description=str_replace(">","",$description);
return addslashes(trim($description));
}

在php中删除目录中的文件我们需要遍历目录中的文件,然后获取文件的时间,我们再进行判断这个文件是不是过期了,如果适合条件就可以删除了。

删除文件

 代码如下 复制代码

file_delete = "home/meeta/my.php";

if (unlink($file_delete)) {
echo "The file was deleted successfully.", "n";
} else {
echo "The specified file could not be deleted. Please try again.", "n";
}
?>

下面加了判断文件是否存在

 代码如下 复制代码

$myfile = "./test1.txt";
if (file_exists($myfile)) {
$result=unlink ($myfile);
echo $result;
}
?>

删除指定文件夹根目录指定日期之前文件

 代码如下 复制代码

<?php
function del_dir($dir){    //删除目录
    if(!($mydir=@dir($dir))){
        return;
    }
    while($file=$mydir->read()){
        if(is_dir("$dir$file") && $file!='.' && $file!='..'){
            @chmod("$dir$file", 0777);
            del_dir("$dir$file");
        }elseif(is_file("$dir/$file")){
            $file_time=@stat($file);    //读取文件的最后更新时间
            if(time()-$file_time>3600*24*14){
                @chmod("$dir/$file", 0777);
                @unlink("$dir/$file");
            }
        }
    }
    $mydir->close();
    @chmod($dir, 0777);
    @rmdir($dir);
}
?>

[!--infotagslink--]

相关文章

  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • 一个奇葩的最短的 IE 版本判断JS脚本

    使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
  • c# 判断是否为空然后赋值的4种实现方法

    下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • MySql存储过程之逻辑判断和条件控制

    具体详情请看下文小编给大家带来的知识点。同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE1、IF判断IF判断的格式是这样的:IF expression THEN commands [ELSEIF ex...2015-10-21
  • PHP中empty和isset对于参数结构的判断及empty()和isset()的区别

    废话不多说了,直接给大家贴代码了。<&#63;php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) {...2015-11-24
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#读取文件所有行到数组的方法

    这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下...2020-06-25
  • 将二维数组转为一维数组的2种方法

    如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array(  array(    'id'=>'45',    'name'=>'jack'  ),  array(    'id'=>'34',    'name'=>'mary'  ),  array(    'id...2014-05-31
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php中数组写入文件方法

    在php中为我们提供了一个函数var_export 他可以直接将php代码入到一个文件中哦。 代码如下 复制代码 var_export($times,true);后面不加tru...2016-11-25