仓酷云

标题: PHP编程:PHP小研讨拿出来和人人分享 [打印本页]

作者: 萌萌妈妈    时间: 2015-2-3 23:32
标题: PHP编程:PHP小研讨拿出来和人人分享
即使你理解不了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
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 简单生活    时间: 2015-2-9 09:08
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 再见西城    时间: 2015-2-27 05:04
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
作者: 飘飘悠悠    时间: 2015-2-27 05:07
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 愤怒的大鸟    时间: 2015-3-5 22:05
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 透明    时间: 2015-3-12 15:49
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 海妖    时间: 2015-3-19 23:28
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 兰色精灵    时间: 2015-4-7 08:22
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: admin    时间: 2015-4-11 00:09
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 分手快乐    时间: 2015-4-16 16:09
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 蒙在股里    时间: 2015-4-17 17:58
本文当是我的笔记啦,遇到的问题随时填充
作者: 活着的死人    时间: 2015-4-21 15:52
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
作者: 老尸    时间: 2015-4-23 13:40
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 金色的骷髅    时间: 2015-5-11 14:04
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 若相依    时间: 2015-6-13 20:57
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 变相怪杰    时间: 2015-6-17 09:56
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 飘灵儿    时间: 2015-6-20 22:34
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 乐观    时间: 2015-6-27 22:33
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者: 只想知道    时间: 2015-7-15 06:04
基础有没有对学习php没有太大区别,关键是兴趣。




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