PHP 原来是这么神奇的语言吗?

2022-03-12 17:27:13 +08:00
 darklinden

今天一个同事在吐槽 lua 不好使,然后发我一段代码

locla test = {}
test['a'].b = 0

我:“??? a 对应的对象没有初始化直接访问 b 属性不是崩崩崩?”

回:“js 和 php 都能这么写啊...”

我:“php 我写的少,js 这不是典型的 property of undefined 么?正常语言但凡有一个不报错的都见鬼了”

于是人回了我一段

var test = {};
test['hasOwnProperty'].b = 0

我:“... hasOwnProperty 是特么的通用函数,有对象的好么?你写段 php ”

$test = array();
$test["a"]["b"] = 1024;
print($test);

这见鬼的代码竟然不报错...

6626 次点击
所在节点    程序员
39 条回复
everyx
2022-03-12 17:29:47 +08:00
也要看你用的 PHP 版本 😂
eason1874
2022-03-12 17:46:44 +08:00
这已经是正经代码了

我接触的一些 PHP 项目充满奇怪写法,把日志等级调到警告之后,警告日志以每秒几 MB 的速度增长,但是程序能正常跑
westoy
2022-03-12 17:52:44 +08:00
我还以为是啥, 那是你都没见过中古用 @一把梭哈的代码........
zakokun
2022-03-12 18:03:00 +08:00
你这同事稀里糊涂的。
php 的$test["a"]["b"] = 1024 作用是初始化二维数组并赋值。这个不会报错的。
如果弄个 $test["a"]->b = 1024 不报错才有鬼了。
dobelee
2022-03-12 18:07:39 +08:00
在 php 中这段代码的意思是给二维数组中的 b 赋值,不是没报错,是根本没有错误。
encro
2022-03-12 18:12:32 +08:00
PHP 开发环境不开 notice 级别错误显示,就是个二哈。
maigebaoer
2022-03-12 19:00:53 +08:00
php 多维数组赋值和对象属性赋值没联系
qeqv
2022-03-12 19:21:53 +08:00
PHP 的数组,想怎么用怎么用,终极省心。没有什么数据结构是一个数组解决不了的,如果有,就两个
sadfQED2
2022-03-12 19:23:12 +08:00
我以为啥呢,世界第一编程语言,代码一堆 error 错误,然而丝毫不影响程序正常运行
wonderfulcxm
2022-03-12 19:29:38 +08:00
lua 的 table 很强大,可以表达别的语言中的数组、哈希表、对象,PHP 的数组可以表达别的语言中的数组、哈希,这么写没毛病,是对象是另外一种写法,而且不会用 print 来调试数组,不像 js 的数组就真的只是数组。
wonderfulcxm
2022-03-12 19:34:35 +08:00
是对象是另外一种写法
->而对象是另外一种写法
Buges
2022-03-12 19:36:17 +08:00
初始化(声明)和赋值的混淆可以说是动态语言的一大糟粕。
jousca
2022-03-12 19:41:16 +08:00
PHP 是个神奇牛逼的语言……
james122333
2022-03-12 19:50:42 +08:00
动态语言就是要方便 不然相比那些啰嗦的语言有什么长处 js 也很神奇 对象与数组分不清楚
newtype0092
2022-03-12 19:53:09 +08:00
@qeqv lua:我的 table 今天就要和你比一比~
charlie21
2022-03-12 20:22:51 +08:00
php 里没有字典,因为 array 就是字典。说起神奇,这就不得不提到 stackoverflow php 区的名场面了:
如何取得 php 数组的最后一个元素 php array last element speed - Google Search
https://stackoverflow.com/questions/3687358/whats-the-best-way-to-get-the-last-element-of-an-array-without-deleting-it/41795859#41795859
yaott2020
2022-03-12 20:59:17 +08:00
确实,PHP 很人性化,写起来很爽(不然怎么敢叫自己最好的编程语言)
buffzty
2022-03-12 21:14:04 +08:00
应该五六年前 php 就能写得跟 java 一模一样了,除了泛型没有. 他有垃圾语法你为什么要去用呢. 任何语言都可以写出垃圾.
人的问题非要怪到语言上.
guyeu
2022-03-12 21:31:16 +08:00
locla 是个 typo 吧,如果这都能跑的话确实有点惊讶
airplayxcom
2022-03-12 21:35:54 +08:00
PHP 天下第一 怎么能错!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX