基础知识

  • 三种测量变量的函数 is_set() empty() is_NULL()

is_set()检测该变量是否存在,且值是否为NULL,如果变量值为NULL 或者变量声明后没赋值返回false 其他情况返回true

empty()变量值为布尔值的TRUE,变量值为NULL byte('')返回false,其他情况返回true

is_null 变量值为NULL, 或者变量声明但没赋值时是ture,其余情况为false

  • 全局变量问题

在函数体内访问外部变量时可以用$GLOBALS['变量名'] 或global 变量名,所谓全局,范畴不是指整个网站,而是当前页面,包括include() require()的全部文件

$GLOBALS[]指的全局变量本身; global 变量名是外部变量的同名引用或指针

<?php 
$myfavorite = '徐晓冬';
function whoismyfavorite()
{
    global $myfavorite;
    $myfavorite = '陈培昌';
}
whoismyfavorite()
echo "喜欢$myfavorite"; ?>
结果

<?php
$myfavorite = '徐晓冬';
function whoismyfavorite()
{

$GLOBALS['myfavorite'] = '陈培昌';
}
whoismyfavorite();
echo "喜欢$myfavorite";
?>

结果:

结论:栈中的变量$myfavorite指向了堆中的数据"徐晓冬"(我们姑且把这个指针命名为00xx1),global $myfavorite新增了一个指针(我们姑且把这个指针命名为00xx2)也指向了堆中同一片区域中的数据"徐晓冬",当所指的数据改为"陈培昌"时,00xx2所指的数据,顺理成章的也改成了'陈培昌'

而针对$GLOBALS['myfavorite']的操作,是直接对堆中数据的更改,同样下面的代码也能说明这一问题

<?php
$myfavorite = '徐晓冬';

function whoismyfavorite2()
{
global $myfavorite;
unset($myfavorite);
}
whoismyfavorite2();
echo "喜欢$myfavorite"."<br/>";

?>

结果:

这一操作只是删除了一个指向数据"徐晓冬"的指针链接00xx2,而并不影响数据本身,也不影响数据连接00xx1

<?php
$myfavorite = '徐晓冬';

function whoismyfavorite()
{

unset($GLOBALS['myfavorite']);
}
whoismyfavorite();
echo "喜欢$myfavorite"."<br/>";
?>

这一操作直接删除了堆中的数据"徐晓冬"

  •  静态变量的使用
//所谓静态变量就是,希望在函数体中每次调用时都能沿用上一次调用时保存的结果
<?php
function staticeffects()
{
    static $hisnum=0;
    ++$hisnum;
    echo "昌仔做了$hisnum"."个仰卧起坐"."<br/>";
}
staticeffects();
staticeffects();
staticeffects();
staticeffects();
staticeffects();
staticeffects();
staticeffects();
staticeffects();
?>
结果:
  •  一种对多维数组排序的办法
<?php
$myarray=array(
        array('陈培昌',21),
        array('程劲',19),
        array('徐晓冬',39),
        array('厉智',30),
 );

function arrange($a,$b)
{
    if ($a[1]<$b[1])
    {
        return -1;
    }
    elseif ($a[1]>$b[1])
    {
        return 1;
    }
    else {
        return 0;
    }
}
usort($myarray,'arrange');
foreach ($myarray as $wa)
{
    echo "$wa[0]:$wa[1]<br/>";
}
?>
结果:
原文地址:https://www.cnblogs.com/saintdingspage/p/10038351.html