echo "static 测试
";
function static1($s,$s2='')
{
static $test = array();
var_dump(isset($test[$s])); //%%SSSS%
isset($test[$s]) or $test[$s] = $s;
empty($s2) or $test[$s2] = $s2;
if(isset($test[$s2]))
echo $test[$s].'=='.$test[$s2];
echo '---';
}
function static2($s,$s2='')
{
static $test = array();
var_dump(isset($test[$s])); //%%SSSS% 如果可以跨函数那么他这边应为true说明是不可以的
isset($test[$s]) or $test[$s] = $s;
empty($s2) or $test[$s2] = $s2;
if(isset($test[$s2]))
echo $test[$s].'=='.$test[$s2];
echo '---';
}
static1('s'); ///bool(false) ---
echo "
";
static1('s','e'); //bool(true) s==e---
echo "
";
static2('s','e'); //bool(false) s==e---
echo "
";
function staticInt()
{
static $int = 0;
echo ++$int;
}
staticInt(); //1
echo '
';
staticInt(); //2
综述: 一、static变量不能跨函数 二、static 变量能保存之前的已调用的值且不受在函数初始化时的变量的影响,初始化的变量只在第二次使用时有效