仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1100|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:PHP小研讨拿出来和人人分享

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:32:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。      小小看法(参考风雪之隅及网上相干材料):
    援用和复制的区分:
    人人都晓得援用其实就是:$a = 1;$b = $a;改动$a或$b不会影响对方。而援用是按地址传值:$a = 1;$b = &$a;改动任何一个另外一个值城市改动。
    然而在末尾加个why呢,为何会是如许呢?
    人人需求了解php外面的两个机制就是copy on write 和 change on write:
    copy on write :写时复制;使用于变量复制。例如下面例子,$a = 1;$a变量寄存在符号内外面,而值"1"寄存在zval中。意思也就是说php外面寄存
    的变量,每一个变量名都寄存在符号内外面,每一个符号对应一个zval;zval可以看作一个容器,外面寄存着变量值,变量类型,等等。
    $a = 1;$b = $a;能够会有人以为内存里有两个"1",实践上并非如许的,$a与$b都指向寄存1的zval容器。可以抽象比方为,$a与$b各自有条线指向
    zval,zval中有个参数是refcount来计数的,就是统计有几何线指向本人的。当有个变量停止复制时分refcount就会加1。即:$a = 1;$b = $a;此时存
    放1的zval布局外面的refcount值为2。php外面有个函数可以检查,就是debug_zval_dump($v);当debug_zval_dump($a);时分计数为3,由于$a是以
    传值得模式传给debug_zval_dump的所以打印出来的值是3。
    接着申明一个成绩,就是unset,它的感化是使变量的refcount数减一。也就是当refcount值为0的时分才会将变量值占的内存释放失落。当unset($b)的时分
    1并没有在内存中释放失落,而是指向它的援用数减。
    傍边说到的内存释能够其实不会释放给体系(OS),php会为本人启示个指定巨细的内存,当有变量发生时分会去本人的内存区外面请求,当释放的时分会释放到自
    己的内存区域外面。关于进步效力有很大匡助了。然而当超越这个指定值得时分会去向体系请求内存了,那时分再释放的时分就会释放给体系了
    关于援用,zval外面有另外一个参数is_ref来标志(标志是不是为真实的援用),此值默许为0,例如:$a = 1;$b = &$a;此时debug_zval_dump($a);了局为1,
    refcount = 2,is_ref = 3,
    版本5.2.17源码中的zval结合体,可以去官网下载
    typedef union _zvalue_value {
    long lval; /* long value */
    double dval; /* double value */
    struct {
    char *val;
    int len;
    } str;
    HashTable *ht; /* hash table value */
    zend_object_value obj;
    } zvalue_value;
    struct _zval_struct {
    /* Variable information */
    zvalue_value value; /* value */
    zend_uint refcount;
    zend_uchar type; /* active type */
    zend_uchar is_ref;
    };
    测试几个法式的履行速度
    测试情况:
    OS:win7
    php vesion 5.2.9
    apache2.0
    1.判别变量值是不是为空用'!'加变量名字与empty加变量名做履行工夫对照(轮回1万万次)
    if外面利用!$a履行工夫为:2.40036678314s
    if外面利用empty($a)履行工夫为:2.52875089645s
    测试代码:  
    $start = microtime(true);
    $a = '';
    for($i=0; $i < 10000000; $i++){
    if(!$a){//可改成empty($a)
    echo " ";
    }
    }
    $end = microtime(true);
    echo "履行工夫为:",($end-$start),"s";
    ?>
   
    2.利用if-esle与利用三元运算符做履行工夫对照(轮回1万万次)
    利用if-else 履行工夫为:2.37516283989s
    利用三元运算符 履行工夫为:2.14390015602s
    三元运算符运转时分,每次变量城市复制一次
    if-else不会,影响甚微,只是拿出来和人人分享下
    测试代码:  
    $start = microtime(true);
    $a = range(1, 1000);
    for($i=0; $i < 10000000; $i++){
    if(isset($a)){
    echo " ";
    }else{
    echo "";
    }
    }
    $end = microtime(true);
    echo "履行工夫为:",($end-$start),"s";
    ?>
    
    $start = microtime(true);
    $a = range(1, 1000);
    for($i=0; $i < 10000000; $i++){
    isset($a) ? " " : "";
    }
    $end = microtime(true);
    echo "履行工夫为:",($end-$start),"s";
    ?>
   
PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。
再现理想 该用户已被删除
沙发
发表于 2015-2-4 01:34:19 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
简单生活 该用户已被删除
板凳
发表于 2015-2-9 09:08:32 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
再见西城 该用户已被删除
地板
发表于 2015-2-27 05:04:36 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-27 05:07:14 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-3-5 22:05:04 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
透明 该用户已被删除
7#
发表于 2015-3-12 15:49:51 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
海妖 该用户已被删除
8#
发表于 2015-3-19 23:28:07 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
兰色精灵 该用户已被删除
9#
发表于 2015-4-7 08:22:38 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
admin 该用户已被删除
10#
发表于 2015-4-11 00:09:02 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
分手快乐 该用户已被删除
11#
发表于 2015-4-16 16:09:08 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
蒙在股里 该用户已被删除
12#
发表于 2015-4-17 17:58:59 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
活着的死人 该用户已被删除
13#
发表于 2015-4-21 15:52:04 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
老尸 该用户已被删除
14#
发表于 2015-4-23 13:40:46 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
金色的骷髅 该用户已被删除
15#
发表于 2015-5-11 14:04:48 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
若相依 该用户已被删除
16#
发表于 2015-6-13 20:57:20 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
变相怪杰 该用户已被删除
17#
发表于 2015-6-17 09:56:39 | 只看该作者
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
飘灵儿 该用户已被删除
18#
发表于 2015-6-20 22:34:05 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
乐观 该用户已被删除
19#
发表于 2015-6-27 22:33:39 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
只想知道 该用户已被删除
20#
发表于 2015-7-15 06:04:29 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 05:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表