局部变量、静态变量、参数在递归回溯中的使用:
1、静态变量在参与递归回溯的过程中变量的值如果被改变,那么回溯时值也会是被改变的值。
2、局部变量在函数回溯过程中值不会改变,保存递归调用之前的值。
3、参数和局部变量差不多一样,但是参数可以在递归调用时传递参数——与回溯无关。
<?php
class a
{
public function __construct()
{
echo "正在测试<br>";
}
};
function my_var_export($varible,$tmp=" ")
{
$buffer="";
static $record=0;
if(is_array($varible))
{
$record+=4;
str_pad($tmp,$record+1," ",STR_PAD_LEFT);
$buffer.=$record>4?"<br>".$tmp."array(<br>":"array(<br>";
if($record>4) $tmp.=" ";
foreach($varible as $key=>$value)
{
if(!is_int($key)) $key="'".$key."'";
$buffer.=$tmp.$key." => ".my_var_export($value,$tmp).",<br>";
}
$tmp=substr($tmp,15);
$buffer.=$record>4?$tmp.")":")";
}else if(is_int($varible))
{
return $varible;
}
else if(is_string($varible))
{
return "'".$varible."'";
}
else if(is_float($varible))
{
return $varible;
}
else if(is_bool($varible))
{
return $varible?"true":"false";
}else if(is_null($varible))
{
return 'null';
}else
{
throw new exception("未知数据类型");
}
return $buffer;
}
$a=new a();
$arr=array("dd",array('cc2',"cc5","dd",array("dd8",array("dd9"))),"dd1",$a);
try
{
echo my_var_export($arr);
}catch(Exception $e)
{
echo $e->getMessage();
}
echo "<br>";
var_export($arr);
?>