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

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

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

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

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

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

© 2021 V2EX