为什么PHP函数in_array和strpos中haystack和needle的顺序不一致?

che*_*vim 2 php api-design language-design

haystack这两个非常核心的 PHP 函数中的参数顺序needle并不一致:

为什么会这样呢?

Van*_*son 8

PHP 中的针/干草堆

它们实际上并不像许多人想象的那样不一致。您已经部分发现了一致性:

  • 所有字符串函数都是(haystack、needle)

  • 所有数组函数都是(needle、haystack)

Rasmus Lerdorf(PHP 的创建者)在 2019 年的一次约 25 分钟的演讲中指出了这一点:

PHP 25 年 - phpday 2019

https://youtu.be/iGOAQli7tGc?t=1485

PHP 中的不一致

16:45,他制作了一张题为“他在想什么?”的幻灯片。他还谈到了“命名不一致”的问题。(针/干草堆问题只是其中之一)

https://youtu.be/iGOAQli7tGc?t=1005

在这次演讲中,他还解释说,他对 PHP 的设计决策几乎全部基于 PHP 是“底层 C 库的包装器”的想法,并且保持参数与底层代码的顺序相同。