浅析php中empty与isset区别

 更新时间:2016年11月25日 15:46  点击:1910
empty() 判断一个变量是否为\"空\",isset() 判断一个变量是否已经设置。正是这种所谓的\"顾名思义\",令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生一些意外

empty是判断变量值是非空或非零的值。对应空定义包括:""(空字符串)、0、"0"、NULL、FALSE、array()和$var(只声明但未赋值)。也就是说当变量值为上述这些,empty返回TRUE,其他的都返回FALSE。

isset是检测变量是否设置,并且不是 NULL。变量设置可以从几个方面来说。1:最简单的就是变量是否先声明和赋值;2:array中是否存在对应的index或key;3:object中是否存在对应的属性。

从上面的两个function定义可以看到,在某些情况下,两者可以公用,但其区别还是很大的。另外它们都只能检测变量,检测任何非变量的东西都将导致解析错误。例如直接检查另一个function的返回值(empty(otherFunction())),你将看到"Fatal error: Can't use function return value in write context in"这样的错误。

另外isset可以一次检查多个变量,例如:isset($var1, $var2, $var3),当这三个值分别的isset都为TRUE结果为TRUE,否则结果为FALSE。


比如检测 $id 变量,当 $id=0 时,用empty() 和 isset() 来检测变量 $id 是否已经配置,两都将返回不同的值—— empty() 认为没有配置,isset() 能够取得 $id 的值:

 

 代码如下 复制代码
 $id=0;
    empty($id)?print "It's empty .":print "It's $id .";
      //结果:It's empty .
    print "<br>";
    !isset($id)?print "It's empty .":print "It's $id .";
      //结果:It's 0 .


   这意味着,我们在使用变量处理函数时,当该变量可能出现0的值,使用 empty() 要小心,这个时候用 isset 取代它更明智一些。

当一个php页面的 URL 尾部参数出现 id=0 时(比如:test.php?id=0),试比较:

 

 代码如下 复制代码
if(empty($id)) $id=1; - 若 id=0 ,id 也会为1
if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1


可分开运行以下代码检测上述推断:

 

 代码如下 复制代码

 if(empty($id)) $id=1;
    print $id; // 得到 1

    if(!isset($id)) $id=1;
 print $id; //得到 0

测试代码:

$sep = "<br />";

echo 'test undeclared var empty : ';
var_dump(empty($var)); // TRUE
echo $sep . 'test undeclared var isset : ';
var_dump(isset($var)); // FALSE

$var;
echo $sep . 'test declared var but no set value empty : ';
var_dump(empty($var)); // TRUE
echo $sep . 'test declared var but no set value isset : ';
var_dump(isset($var)); // FALSE, 变量申明未赋值,默认值为NULL

$var = NULL;
echo $sep . 'test declared var and set value NULL empty : ';
var_dump(empty($var)); // TRUE
echo $sep . 'test declared var and set value NULL isset : ';
var_dump(isset($var)); // FALSE, 变量申明赋值为NULL

$var1 = ''; $var2 = '0'; $var3 = 0; $var4 = FALSE; $var5 = array();

echo $sep . 'test '' empty : ';
var_dump(empty($var1)); // TRUE
echo $sep . 'test '0' empty : ';
var_dump(empty($var2)); // TRUE
echo $sep . 'test 0 empty : ';
var_dump(empty($var3)); // TRUE
echo $sep . 'test FALSE empty : ';
var_dump(empty($var4)); // TRUE
echo $sep . 'test array() empty : ';
var_dump(empty($var5)); // TRUE
echo $sep . 'test '', '0', 0, FALSE, array() isset : ';
var_dump(isset($var1, $var2, $var3, $var4, $var5)); // TRUE,  变量申明并赋值为空字符串输出的结果为:

test undeclared var empty : bool(true)
test undeclared var isset : bool(false)
test declared var but no set value empty : bool(true)
test declared var but no set value isset : bool(false)
test declared var and set value NULL empty : bool(true)
test declared var and set value NULL isset : bool(false)
test '' empty : bool(true)
test '0' empty : bool(true)
test 0 empty : bool(true)
test FALSE empty : bool(true)
test array() empty : bool(true)
test '', '0', 0, FALSE, array() isset : bool(true)

这里说的异步执行是让php脚本在后台挂起一个执行具体操作的脚本,主脚本退出后,挂起的脚本还能继续执行。比如执行某些耗时操作或可以并行执行的操作,可以采用php异步执行的方式。主脚本和子脚本的通讯可以采用外部文件或memcached的方式。原理就是通过exec或system来执行一个外部命令。注意:本文所述的是针对Linux环境。

在Linux下要让一个脚本挂在后台执行可以在命令的结尾加上一个 "&" 符号,有时候这还不够,需要借助nohup命令,关于nohup,


玩过Linux的人应该都知道,如果想让一个程序在后台运行,只要在执行命令的末尾加上一个&符号就可以了。但是这种方式不是很保险,有些程序当你登出终端后它就会停止。那么如何让一个程序真正永远在后台执行呢。答案就是使用 nohub 命令,格式为:

nohup 执行程序的命令 &

如果程序有输出,它会试着把输出写入执
行上述命令的当前文件夹下的 nohup.out 文件中,当写入失败,就会写当前用户的$HOME目录下的nohup.out 中。

 

CLI环境和Web环境执行的操作还不太一样。先来说CLI环境,这里需要用上nohup和&,同时还要把指定输出,如果不想要输出结果,可以把输出定向到/dev/null中。现在来做一个测试,假设在一个目录中有main.php、sub1.php和sub2.php,其中sub1和sub2内容一样都让sleep函数暂停一段时间。代码如下:

 代码如下 复制代码

//main.php
<?php
    $cmd = 'nohup php ./sub.php >./tmp.log  &';
    exec($cmd);
    $cmd = 'nohup php ./sub1.php >/dev/null  &';
    exec($cmd);
?>

//sub1.php sub2.php
<?php
    sleep(100000);
?>

上述文件中main.php是作为主脚本,在命令行中执行php main.php,可以看到main.php脚本很快就执行完并退出。在使用ps aux | grep sub命令搜索进程,应该可以在后台看到上述的两个子脚本,说明成功挂起了子脚本。

在Web环境下,执行php脚本都是Web服务器开启的cgi进程来处理,只要脚本不退出,就会一直占有该cgi进程,当启动的所有cgi进程都被占用完后就不能在处理新的请求。所以对那些可能会很费时的脚本,可以采用异步的方式。启动子脚本的方式和CLI差不多,必须要使用&和指定输出(只好是定向到/dev/null),但是不能使用nohup。例如:

 代码如下 复制代码
<?php
    $cmd = 'php PATH_TO_SUB1/sub1.php >/dev/null  &';
    exec($cmd);
    $cmd = 'php PATH_TO_SUB1/sub2.php >/dev/null  &';
    exec($cmd);
?>

当在浏览器中访问该脚本文件,可以看到浏览器里面响应完成,同时使用ps命令查看后台可以看到sub1和sub2脚本。

注意上述例子中如果php命令不在PATH中,需要指定命令完整的路径。推荐使用完整路径,特别是在Web下

php提供了mkdir来创建文件,但对应5.0一下的版本不支持递归创建多级目录,也就是说给定要创建的目录的上级目录不存在,那么就会创建失败。5.0及以上版本通过吧第三个参数设置为TRUE,就能递归创建指定的目录。不过自己实现一个递归创建多目录的函数也很简单,具体代码如下:

 代码如下 复制代码

function mkdirs($dir){
    if(!is_dir($dir)){
        if(!mkdirs(dirname($dir))){
            return FALSE;
        }

        if(!mkdir($dir, 0777)){
            return FALSE;
        }
    }

    return TRUE;
}

  $path="/aa/bb/cc/cd"; //要创建的目录
   $mode=0755; //创建目录的模式
   createdir($path,$mode);//测试

php创建目录的函数是mkdir($dir,$mode);但是它每次只能创建一个目录,也就是说它不能一次创建多级目录(这点大家肯定知道来的,这里小编多此一举了)。

小编整理了两个可以递归创建目录的方法供大家参考学习,谢谢啦!

 代码如下 复制代码

<?php
/*
*mkdir($dir,$mode)
*PHP 递归创建目录
*/
function mkdirs($dir, $mode = 0777)
{
    if (is_dir($dir) || @mkdir($dir, $mode)){
        return true;
    }
    if (!mkdirs(dirname($dir), $mode)){
        return false;
    }
    return @mkdir($dir, $mode);
}

function mkdirs($dir, $mode = 0777)
{
    $dirArray = explode("/",$dir);
    $dirArray = array_filter($dirArray);
  
    $created = "";
    foreach($dirArray as $key => $value){
        if(!empty($created)){
            $created .= "/".$value;
            if(!is_dir($created)){
                mkdir($created,$mode);
            }
        }else{
            if(!is_dir($value)){
                mkdir($value,$mode);
            }
            $created .= $value;
        }
    }
}
?>
//代码应用实例
$path="abc/ff/ss/";
mkdirs($path,$mode = 0777);

file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。

创建一个可以控制的资源句柄,通过控制资源句柄超时来控制file_get_contents这个方法的超时时间,使用起来很方便,也很简单。

 代码如下 复制代码


$context = stream_context_create(array(
     'http' => array(
      'timeout' => 3000 //超时时间,单位为秒
     )
)); 
// Fetch the URL's contents
$contents = file_get_contents('http://www.111cn.net', 0, $context);


一、增加超时的时间限制

这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。

我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource $context的timeout参数:

 代码如下 复制代码

$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>60,
)
);
$context = stream_context_create($opts);
$html =file_get_contents('http://www.111cn.net', false, $context);

二、一次有延时的话那就多试几次

有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回 FALSE,所以可以下面这样编写代码:

 

 代码如下 复制代码

$cnt=0; 

while($cnt < 3 && ($str=@file_get_contents('http...'))===FALSE) $cnt++;


以上方法对付超时已经OK了。那么Post呢?细心点有人发现了'method'=>"GET", 对!是不是能设置成post呢?百度找了下相关资料,还真可以!而且有人写出了山寨版的post传值函数,如下:

 

 代码如下 复制代码

function Post($url, $post = null)
{
$context = array();

if (is_array($post))
{
ksort($post);

$context['http'] = array
(

'timeout'=>60,
'method' => 'POST',
'content' => http_build_query($post, '', '&'),
);
}

return file_get_contents($url, false, stream_context_create($context));
}

$data = array
(
'name' => 'test',
'email' => 'test@gmail.com',
'submit' => 'submit',
);

echo Post('http://www.111cn.net', $data);

在php中分页是我们开发中必须要用到的东西,但在觉得在php分页比在asp中方便了很多,下面我来给各位同学详细介绍人几个不错的php分页类吧,各位同学可参考。

这是我自己写的一个php分页实例

 

 代码如下 复制代码

<html>
<head>
    <title>简单的PHP分页程序</title>
</head>
<body>
<?php
    //建立连接数据库
    $linkID=@mysql_connect("itlobo.com","root","") or die("you could notconnect mysql");
    //连接的数据库名称
    @mysql_select_db("ceshi") or die("could not select database!");
    //取得记录总数

    $query="SELECT count(*) FROM user";
    $rs = mysql_query($query);
    $myrows=mysql_fetch_array($rs);
    $numrows=$myrows[0];
    //设定每一页显示的记录数
    $pagesize = 1;
    //计算总页数
    $pages=intval($numrows/$pagesize);
    if($numrows%$pagesize)
    $pages++;
    //设置页数
    if(isset($_POST['page']))
       $page=intval($_POST['page']);
    else{
         $page = 1; //没有页数则显示第一页;
        }
    //计算记录偏移量
    $offset = ($page-1)*$pagesize;
    //读取指定的记录数
    $query1="select * from user limit $offset,$pagesize";
    $rs = mysql_query($query1);
    if($myrows=mysql_fetch_array($rs))
    {
       $i = 0;  
?>
<table width="80%" border="1">
    <tr>
        <td width="50%">用户名</td>
        <td width="50%">密码</td>
    </tr>
    <?php
        do{
            $i++;
    ?>
    <tr>
        <td width="50%"><?php echo $myrows["username"] ?></td>
        <td width="50%"><?php echo $myrows["password"] ?></td>
    </tr>
    <?php
        }
        while($myrows=mysql_fetch_array($rs));
        echo "</table>";
    } 
        $first = 1;
        $prev =$page-1;
        $next = $page+1;
        $last=$pages;
        if($page>1)
        {
            echo "<a href='fenye.php?page=".$first."'>首页</a>";
            echo "<a href='fenye.php?page=".$prev."'>上一页</a>";
        }
        if($page<$pages)
        {
            echo "<a href='fenye.php?page=".$next."'>下一页</a>";
            echo "<a href='fenye.php?page=".$last."'>最后一页</a>";
        }
        echo "<div align = 'center'>共有" .$pages. "页(" .$page. "/" .$pages.")";
        for($i=1; $i<$page; $i++)
            echo "<a href='fenye.php?page=".$i."'>[".$i."]</a>";
        echo "[" .$page. "]";
        for($i=$page+1; $i<=$pages;$i++)
            echo "<a href='fenye.php?page=".$i."'>[".$i."]</a>";
        echo"</div>";
    ?>      
</body>
</html>

上面代码不能重复使用,后来整理了一个类

 代码如下 复制代码

#pages{display:block; text-align:center; overflow:hidden; color:#000; font-size:13px}
#pages a{color:#333; text-decoration:none; font-family:Verdana,Geneva,sans-serif; padding:2px 3px; display:block}
#pages li{float:left; display:inline-block; border:1px solid #999; margin-right:3px; margin-left:3px}
#pages #spages{background:#CCC; font-weight:bold; color:#36C}

PHP分页函数类源码:

 代码如下 复制代码

<?php
/*
* 分页模块
*/

interface Page{
public function showpage();
}

class AdminPage implements Page{
/*
* 构造参数
* SQL语句,每页显示数,url
*/
private $sql;
private $pageline; //每页显示多少行数据
private $urlstr;
private $nowpage;
private $totalNum;
private $pageNum;
private $pageStr;// 形成分页字符串

public function __construct($sql,$p){
$this->sql = $sql;
$this->pageline = $p;
$this->urlstr = $_SERVER['SCRIPT_NAME'];
if(empty($_GET['p'])){
$this->nowpage = 1; //初始化当前页数为1
}else if(is_numeric($_GET['p'])){
$this->nowpage = $_GET['p'];
}else{
$e = new Error(6);
$e->show();
}

$s = new Sql();
$this->totalNum = $s->results_exist_num($this->sql);
$this->pageNum = ceil($this->totalNum/$this->pageline);

}
/*
* 形式为:
* 首页| 上一页| 1 | 2 | 3 | 4 | 5 |下一页 | 末页
*
*
*/

public function showpage(){
if($this->pageNum >=1 && $this->nowpage <5 ){

if( $this->pageNum <=5){

$this->pageStr = '<ul id="pages"><li><a href="'.$this->urlstr.'?p=1" target="rframe" >首页</a></li>';
if($this->nowpage!=1){
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage-1).'" target="rframe" >上一页</a></li>';
}
for($i=1;$i<=$this->pageNum;$i++){
if($i==$this->nowpage){
$this->pageStr .='<li id="spages"><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}else{
$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}
}
if($this->nowpage !=$this->pageNum){
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage+1).'" target="rframe" >下一页</a></li>';
}

$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$this->pageNum.'" target="rframe" >末页</a></li>';
echo $this->pageStr;

}else if($this->pageNum>5){

$this->pageStr = '<ul id="pages"><li><a href="'.$this->urlstr.'?p=1" target="rframe" >首页</a></li>';
if($this->nowpage !=1){
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage-1).'" target="rframe" >上一页</a></li>';
}

for($i=1;$i<=5;$i++){
if($i==$this->nowpage){
$this->pageStr .='<li id="spages"><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}else{
$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}
}
if($this->nowpage !=$this->pageNum){
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage+1).'" target="rframe" >下一页</a></li>';
}

$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$this->pageNum.'" target="rframe" >末页</a></li>';
echo $this->pageStr;
}

}else if($this->nowpage <= $this->pageNum -2 && $this->nowpage>=5){
$this->pageStr = '<ul id="pages"><li><a href="'.$this->urlstr.'?p=1" target="rframe" >首页</a></li>';
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage-1).'" target="rframe" >上一页</a></li>';
for($i=$this->nowpage-2;$i<=$this->nowpage+2;$i++){
if($i==$this->nowpage){
$this->pageStr .='<li id="spages"><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}else{
$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}
}
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage+1).'" target="rframe" >下一页</a></li>';
$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$this->pageNum.'" target="rframe" >末页</a></li>';
echo $this->pageStr;

}else if($this->nowpage>=$this->pageNum-3 && $this->nowpage <=$this->pageNum){

$this->pageStr = '<ul id="pages"><li><a href="'.$this->urlstr.'?p=1" target="rframe" >首页</a></li>';
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage-1).'" target="rframe" >上一页</a></li>';

for($i=$this->pageNum-4;$i<=$this->pageNum;$i++){
if($i==$this->nowpage){
$this->pageStr .='<li id="spages"><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}else{
$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$i.'" target="rframe" >'.$i.'</a></li>';
}
}
if($this->nowpage !=$this->pageNum){
$this->pageStr .= '<li><a href="'.$this->urlstr.'?p='.($this->nowpage+1).'" target="rframe" >下一页</a></li>';
}

$this->pageStr .='<li><a href="'.$this->urlstr.'?p='.$this->pageNum.'" target="rframe" >末页</a></li>';
echo $this->pageStr;

}
}
}

[!--infotagslink--]

相关文章

  • mysql_connect与mysql_pconnect的区别详解

    在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25
  • C#中out与ref的区别实例解析

    这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • 谈谈Jquery中的children find 的区别有哪些

    精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21
  • PS中像素大小、文档大小的区别

    在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
  • C#中sleep和wait的区别分析

    这篇文章主要介绍了C#中sleep和wait的区别分析,有助于深入理解C#中线程的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • 详解jQuery中的empty、remove和detach

    empty、remove和detach三者都有把元素移除的作用,但细微的差别,造就了它们的使命不同。下面给大家介绍jQuery中的empty、remove和detach的区别,感兴趣的朋友一起学习吧...2016-04-16
  • uniapp和vue的区别详解

    这篇文章主要介绍了uniapp和vue的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-10-19
  • input框中的name和id的区别

    这篇文章主要介绍了input框中的name和id的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-11-22
  • list与push的区别

    //函数list while(list($id,$username,$password,$add_date,$mdn,$mobile,$channel,$last_date,$area,$nickname) = mysql_fetch_array($rs)){ ...2016-11-25
  • php switch 与 if else 区别

    在php中switch是选择,if else也有同理,但是它们肯定是有区别的,那么我们来看看它们两者的区别在哪里呢,下面先看switch case语句吧。 switch($id){ case 1: ...2016-11-25
  • 浅谈C++中字符串输入get与getline的区别

    这篇文章主要介绍了C++中字符串输入get与getline的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php mysql localhost,127.0.0.1和ip区别

    一家之言:localhost与127.0.0.1的区别 localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。看来这个入门问题还有人不清楚,其实这两者是有区别的。no1:localhos...2014-05-31
  • C#中类与接口的区别个人总结

    这篇文章主要介绍了C#中类与接口的区别个人总结,本文讲解了类与接口的区别、接口的用处主要体现在下面几个方面、一些接口的疑问等内容,需要的朋友可以参考下...2020-06-25
  • include包含头文件的语句中,双引号和尖括号的区别(详解)

    下面小编就为大家带来一篇include包含头文件的语句中,双引号和尖括号的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • 详解CSS3中nth-child与nth-of-type的区别

    这篇文章详细解析了CSS3中nth-child与nth-of-type的区别,有兴趣的同学可以参考一下 CSS3中nth-child与nth-of-type的区别其实很简单::nth-of-type为什么要叫:nth-of...2017-01-22
  • 英语单词state与status的区别

    state倾向于condition,是一种延续性的状态。status常用于描述一个过程中的某阶段(phase),类似于C语言中枚举型变量某一个固定的值,这个值属于一个已知的集合。这篇文章主要介绍了英语单词state与status的区别,需要的朋友可以参考下...2020-06-25
  • php echo print print_r三者区别分析

    php教程 echo print print_r三者区别分析 echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的...2016-11-25
  • $i++ ++$i 运行速度与区别

    关于$i++与++$i是什么区别了,下面来看看这些区别的分别。 <?php 方式一: $begin = time(); $i = 0; while(++$i < 10000) { $j = 0; while(++$j < 10000)...2016-11-25
  • php strtr与str_replace区别比较

    php strtr与str_replace区别比较 函数都是具有替换字符功能的。但是strtr比str_replace性能上要块4倍。具体情况请 看如下分解: 首先是strtr函数: 实例1:当 以下为引用的...2016-11-25