2

众所周知,有四个函数可用于插入和删除数组:

  1. array_push()
  2. 数组弹出()
  3. array_unshift()
  4. 数组移位()

和是什么意思,我的array_unshift()意思array_shift()是为什么它们被这样命名?

4

3 回答 3

8

这是历史的。在较新的语言中,我们可能不再称其为“shift”,而来自 Perl 的旧术语包括shift关键字,其作用是:

[Shift] 关闭数组的第一个值并将其返回,将数组缩短 1 并将所有内容向下移动。

这通常与@_包含函数参数的数组一起使用,并且shift一次提供对它们的访问。

PHP,在 Perl 仍然广泛用于 Web 编程的早期,只是简单地采用了这个术语,添加了“反向”unshift并离开了它。

另一个例子是,它以libc函数glob命名。我想其目的是让那些从现有语言转向 PHP 的人熟悉这些功能,但十年后回想起来,也许这些术语已经过时了。 glob()

于 2013-01-01T14:29:48.953 回答
2

我找不到明确的来源,但我的猜测是它源于对移位寄存器的熟悉,它的行为方式相似。

您会在 Perl 中找到类似的函数,PHP 从中借鉴了很多。我猜 Perl 也借鉴了其他来源,但最终,您会遇到一位语言设计者,他认为将操作称为“移位”是合乎逻辑的,因为它类似于移位寄存器。

其他语言使用相同的命名习惯,例如JavascriptActionScript,但其他语言可能使用其他术语,例如 queue/dequeue - 请参阅C#

于 2013-01-01T14:29:58.907 回答
0

array_shift()将数组的第一个值移开并返回,将数组缩短一个元素并向下移动(移位)所有其他值。

于 2013-01-01T14:25:11.967 回答