BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #33393同步于 2016/1/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

我又来黑PHP了

nuanyangyang
2016/1/4镜像同步10 回复
PHP7发布啦!撒花~ 背景看以前的老帖吧: http://bbs.byr.cn/#!article/Linux/131124 还是那段程序: <?php // 创建两个数组。既然是按值拷贝语义,那么$a和$b应该是互补相干的两个数组。 $a = array(1,2,3); $b = array(1,2,3); $a[1] = "Long"; $b[1] = "time"; $x =& $b[1]; // 引用$b的一个元素 $c = $b; // 还是赋值。但是,这回真的还是按值拷贝吗? $c[1] = "no"; // 下面就是见证奇迹的时刻。 print '$a='; print_r($a); print '$b='; print_r($b); // !!!! 为什么!!! print '$c='; print_r($c); unset($x); // 不再引用数组元素。 unset($b); // 删除$b,减少一个引用。 $d = $c; // 还是赋值。现在又是怎么拷贝呢? $d[1] = "see"; print '$c='; print_r($c); // $c和$d不影响。 print '$d='; print_r($d); // 怎么回事?又开始按值拷贝了? ?> 更新到了PHP7。 $ php --version PHP 7.0.1 (cli) (built: Jan 3 2016 09:05:41) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies 然后,用php执行上述代码,结果仍然是: $a=Array ( [0] => 1 [1] => Long [2] => 3 ) $b=Array ( [0] => 1 [1] => no [2] => 3 ) $c=Array ( [0] => 1 [1] => no [2] => 3 ) $c=Array ( [0] => 1 [1] => no [2] => 3 ) $d=Array ( [0] => 1 [1] => see [2] => 3 ) 看样子,PHP就算经历了5->7的大版本更新,也没能修改这个bug。阿弥陀佛[ema1] PHP一路走好 p.s. 如果好奇为什么的话,可以看看原帖8楼,解释得很清楚: http://bbs.byr.cn/#!article/Linux/131124 主要问题是PHP混淆了“引用计数垃圾回收”和“引用计数的copy-on-write”。前者的引用是真的“引用”语义,后者本不应该让程序员知道的。但是,毕竟PHP“不是设计出来的”,是不断加功能凑出来的语言。原作者也承认:“I don’t know how to stop it, there was never any intent to write a programming language […] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way.”
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
steveyoung机器人#1 · 2016/1/4
~= ̄ω ̄=~
hdw1993机器人#2 · 2016/1/4
应该发到微博并@鸟哥
nuanyangyang机器人#3 · 2016/1/4
【 在 hdw1993 的大作中提到: 】 : 应该发到微博并@鸟哥 木有微博。你帮我at吧。
hdw1993机器人#4 · 2016/1/4
暖神交代的任务,必定完成~明早开工,暖神晚安~ 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : 木有微博。你帮我at吧。
shijianfeng机器人#5 · 2016/1/7
说实话,有PHP开发中多少人有机会使用到这个东西。。。。。。
dfxyz机器人#6 · 2016/1/7
看着晕,虽然不会这么写,但既然是个bug那肯定得修
zoolsher机器人#7 · 2016/1/7
语言特性上PHP这门语言真的是烂成翔…之前没有左结合性,闭包用起来那叫一个食之无味弃之可惜啊…而且为毛PHP只有一种数据结构叫做Array,非要把所有的东西都塞到数组身上
jerryzcx机器人#8 · 2016/1/7
人人都说一天上手的PHP,我使用了三天后决定远离~~~
icybee机器人#9 · 2016/1/7
写php着实没有写python清爽,各种奇葩函数名,对了就不说php很多函数从内部不支持gbk编码