柔情似水 发表于 2015-2-3 23:39:36

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:19

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

愤怒的大鸟 发表于 2015-2-5 00:49:02

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

透明 发表于 2015-2-5 04:21:08

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

简单生活 发表于 2015-2-6 16:44:24

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

再见西城 发表于 2015-2-6 17:09:20

当然这种网站的会员费就几十块钱。

乐观 发表于 2015-3-2 21:10:16

写的比较杂,因为我也是个新手,不当至于大家多多指正。

活着的死人 发表于 2015-3-13 08:08:40

本文当是我的笔记啦,遇到的问题随时填充

谁可相欹 发表于 2015-3-17 05:06:48

使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的

仓酷云 发表于 2015-3-23 02:40:21

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

若天明 发表于 2015-4-9 03:24:16

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

冷月葬花魂 发表于 2015-4-15 11:06:07

爱上php,他也会爱上你。

分手快乐 发表于 2015-4-16 03:03:48

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

灵魂腐蚀 发表于 2015-4-16 15:11:40

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

因胸联盟 发表于 2015-4-26 03:08:04

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

不帅 发表于 2015-4-27 15:43:57

兴趣是最好的老师,百度是最好的词典。

变相怪杰 发表于 2015-5-4 11:57:15

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

飘飘悠悠 发表于 2015-5-5 04:19:39

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

小魔女 发表于 2015-6-21 23:47:02

本文当是我的笔记啦,遇到的问题随时填充
页: [1]
查看完整版本: PHP网站制作之十分精巧的 PHP 递归挪用 代码