PHP 最恶心的地方莫过于数组明明是一个 list,一些操作,比如 filter, unset, unique 去重等操作后, index 不会 reset,转 json 后变成了一个 object!

2023-09-12 12:53:55 +08:00
 HackerJax
op 表示深受其害!(狗头
4298 次点击
所在节点    PHP
57 条回复
darklinden
2023-09-12 12:57:44 +08:00
能意识到 list 和 object 的区别,这一点已经比很多 phper 强了(狗头
neutrino
2023-09-12 13:13:50 +08:00
index reset 了也有问题,原来的 index 不能用了
fuchish112
2023-09-12 13:18:43 +08:00
array_values 一下
zjsxwc
2023-09-12 13:21:14 +08:00
还不是为了兼容你在
```
foreach ($arr as $k=>$v) { ... unset($arr[$k]); ... }
```
里这种写法,如果 unset 后 index 会 reset ,那么后面的循环$k 会乱套。
justfindu
2023-09-12 13:24:58 +08:00
啊 深受其害就要骂它没有为你专人定制吗?
miaotaizi
2023-09-12 13:32:30 +08:00
多研究, 少抱怨
veike
2023-09-12 13:42:33 +08:00
最恶心的不是美元符号 和 -> ?
ganbuliao
2023-09-12 13:52:21 +08:00
php 的数组其实是 object list 是用 object 模拟的 学的时候很爽 但是你用其他语言的数组理解使用的时候 会有一些苦恼吧
tbv
2023-09-12 14:04:19 +08:00
不要张嘴就恶心,你写一个比他好的,或者提出你更好的解决方案,你也可以去提交 PR https://github.com/php/php-src
cwcc
2023-09-12 14:05:34 +08:00
这是优势啊,各种处理方式都有,可以保留 key ,也可以不保留 key 。主要是 array 相关的内置方法确实多,然后所有有关数组、字典的东西都揉进去变成数组,如果不是只接触 PHP ,还要同时写别的语言,一开始可能会感觉有点坑。但时间长了还好,只能说是 PHP 太灵活了,能把 PHP 写得很好很优雅的人也很少。
crynocry
2023-09-12 14:12:51 +08:00
有 ds 扩展里面有 Vector 和 Map 还有各种细分数据结构 .. 看你愿不愿意用了
MrUser
2023-09-12 14:17:35 +08:00
这句 [转 json 后变成了一个 object] ,应该是变成了 json 字符串吧?
json_decode 方法的第二个参数可以控制「 json 字符串」是转成 array 还是 object 。
在 php 里 object 和 array 的 “index” 都可以是数字
d3js
2023-09-12 14:28:28 +08:00
哈哈,好久没看到 PHP 的帖子了
kkk9
2023-09-12 14:30:45 +08:00
@veike #7 那 . 和 => 不恶心吗?(滑稽)
z1829909
2023-09-12 14:35:55 +08:00
php 的数组本来就区分索引数组和关联数组,. 通过 unset, filter, unique 之类的方法破坏了数组连贯性之后就自动变为关联数组了.虽然这么设计有点实用主义, 但是最起码看下怎么用的再喷吧.
brader
2023-09-12 14:40:28 +08:00
虽然我不研究这几个函数的底层,但是有没有可能是官方出于性能考虑而不 reset 来增加开销?因为很多时候不需要 reset 的使用场景,而需要的时候,又有内置的 array 系列函数可供使用
zilan2abv
2023-09-12 14:43:29 +08:00
@darklinden php 就是创造了 array 这一种类型,把 list 和 object 糅合在一起,怎么区分我不管,好用就行了 🐶
coderzhangsan
2023-09-12 14:54:19 +08:00
这恰恰说明,你对 php 数组底层实现不了解,可以去看看 php 内核剖析数组篇;当然你还可以用 php 内置 SPL 数据结构类实现你的需求。
yunye
2023-09-12 15:05:53 +08:00
还以为又有什么高论
lifeintools
2023-09-12 15:07:44 +08:00
多研究,少抱怨。自己菜别怪语言

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

https://www.fyfyfm.apispeedy.workers.dev/t/973000

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

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

© 2021 V2EX