<!--栈的应用实例-->
<?php
$tracks=array();//定义一个全局栈,以存放状态
//进入时,记录状态
function enter_track($name)
{
global $tracks;//str_repeat() 函数把字符串重复指定的次数。
echo str_repeat(" ",count($tracks));/*count()返回数组中元素的数目,
功能为入栈前,统计栈的长度*/
array_push($tracks,$name);//array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
echo"进入 $name (当前栈:".join("->",$tracks).")<br>\n";
}
//退出时,释放状态
function exit_track()
{
global $tracks;
$ret=array_pop($tracks);//array_pop() 函数删除数组中的最后一个元素。
echo str_repeat(" ",count($tracks));//出栈后,统计栈的长度
echo "$ret 退出...<br>\n";
}
//测试函数
function test_step_one()
{
enter_track("One");
exit_track();
}
function test_step_two()
{
enter_track("Two");
test_step_one();
exit_track();
}
function test_step_three()
{
enter_track("Three");
test_step_one();
test_step_two();
exit_track();
}
//执行测试
enter_track("OuterZero");
test_step_three();
exit_track();
?>
一个超级长的基本入栈和出栈的代码
结果如下:
进入 OuterZero (当前栈:OuterZero)
进入 Three (当前栈:OuterZero->Three)
进入 One (当前栈:OuterZero->Three->One)
One 退出…
进入 Two (当前栈:OuterZero->Three->Two)
进入 One (当前栈:OuterZero->Three->Two->One)
One 退出…
Two 退出…
Three 退出…
OuterZero 退出…
小细节 这个代表着空格,上面还有各个数组函数的运用基本能看明白,也码了一遍,但要自己写还是很困难的。