仓酷云

标题: PHP网站制作之十分精巧的 PHP 递归挪用 代码 [打印本页]

作者: 柔情似水    时间: 2015-2-3 23:39
标题: PHP网站制作之十分精巧的 PHP 递归挪用 代码
可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。   

<?php
// 界说 PI 一分的角度的值
define("PII", M_PI/180);

// 新建图象资本,并界说其后台为 白色,远景色为 黑色
$im    = imagecreate(670,500);
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$g     = imagecolorallocate($im, 0x00, 0x00, 0x00);

// 从上面实例化的代码可以得知,初始值 $x, $y, $L, $a 别分为 300, 500, 100, 270
function drawLeaf($g, $x, $y, $L, $a) {
     global $im;
     $B = 50;
     $C = 9;
     $s1 = 2;
     $s2 = 3 ;
     $s3 = 1.2;
     if($L > $s1) {
         // 盘算叶子的定位 下面
         $x2  = $x + $L * cos($a * PII);
         $y2  = $y + $L * sin($a * PII);
         $x2R = $x2 + $L / $s2 * cos(($a + $B) * PII);
         $y2R = $y2 + $L / $s2 * sin(($a + $B) * PII);
         $x2L = $x2 + $L / $s2 * cos(($a - $B) * PII);
         $y2L = $y2 + $L / $s2 * sin(($a - $B) * PII);

         // 盘算叶子的定位 上面
         $x1  = $x + $L / $s2 * cos($a * PII);
         $y1  = $y + $L / $s2 * sin($a * PII);
         $x1L = $x1 + $L / $s2 * cos(($a - $B) * PII);
         $y1L = $y1 + $L / $s2 * sin(($a - $B) * PII);
         $x1R = $x1 + $L / $s2 * cos(($a + $B) * PII);
         $y1R = $y1 + $L / $s2 * sin(($a + $B) * PII);

         // 别分画叶子的骨干和叶面
         ImageLine($im, (int)$x,  (int)$y,  (int)$x2,  (int)$y2,  $g);
         ImageLine($im, (int)$x2, (int)$y2, (int)$x2R, (int)$y2R, $g);
         ImageLine($im, (int)$x2, (int)$y2, (int)$x2L, (int)$y2L, $g);
         ImageLine($im, (int)$x1, (int)$y1, (int)$x1L, (int)$y1L, $g);
         ImageLine($im, (int)$x1, (int)$y1, (int)$x1R, (int)$y1R, $g);

         // 再次递归挪用自己
         drawLeaf($g, $x2,  $y2,  $L / $s3, $a + $C);
         drawLeaf($g, $x2R, $y2R, $L / $s2, $a + $B);
         drawLeaf($g, $x2L, $y2L, $L / $s2, $a - $B);
         drawLeaf($g, $x1L, $y1L, $L / $s2, $a - $B);
         drawLeaf($g, $x1R, $y1R, $L / $s2, $a + $B);
     }
}

// 实例化
drawLeaf($g, 300, 500, 100, 270);
header("Content-type: image/png");
imagepng($im);
?>


在我团体的 PHP 编程经历中,递归挪用经常与静态变量利用。静态变量的寄义可以参考 PHP 手册。但愿上面的代码,会更有益于对递归和静态变量的了解

header("Content-type: text/plain");
function static_function () {
     static $i = 0;
     if ($i++ < 10) {
         echo $i . "\n";
         static_function();
     }
}
static_function();这段代码会如数输入 1 到 10 的数字。在 static_function 函数第二次运转时,变量 i 因为是静态变量,所以仍被保存不被释放,进而可以失掉自增的值。
<P style="TEXT-INDENT: 2em">
我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
作者: 小女巫    时间: 2015-2-4 05:01
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 愤怒的大鸟    时间: 2015-2-5 00:49
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 透明    时间: 2015-2-5 04:21
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 简单生活    时间: 2015-2-6 16:44
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 再见西城    时间: 2015-2-6 17:09
当然这种网站的会员费就几十块钱。
作者: 乐观    时间: 2015-3-2 21:10
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 活着的死人    时间: 2015-3-13 08:08
本文当是我的笔记啦,遇到的问题随时填充
作者: 谁可相欹    时间: 2015-3-17 05:06
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 仓酷云    时间: 2015-3-23 02:40
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 若天明    时间: 2015-4-9 03:24
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 冷月葬花魂    时间: 2015-4-15 11:06
爱上php,他也会爱上你。
作者: 分手快乐    时间: 2015-4-16 03:03
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 灵魂腐蚀    时间: 2015-4-16 15:11
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 因胸联盟    时间: 2015-4-26 03:08
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 不帅    时间: 2015-4-27 15:43
兴趣是最好的老师,百度是最好的词典。
作者: 变相怪杰    时间: 2015-5-4 11:57
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 飘飘悠悠    时间: 2015-5-5 04:19
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 小魔女    时间: 2015-6-21 23:47
本文当是我的笔记啦,遇到的问题随时填充




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2