【问题标题】:Array sorting and reversing behaviour [closed]数组排序和反转行为[关闭]
【发布时间】:2014-08-02 01:18:32
【问题描述】:

我发现在使用 sort() 函数时,我可以这样使用它:

sort($myArray);

$myArray 已排序。但是当我像这样使用 array_reverse 时:

array_reverse($myArray);

数组没有反转。为了让它工作,我必须这样做:

$myArray = array_reverse($myArray);

人们在想知道为什么他们的 array_reverse 不能正常工作之前已经发布了问题,这是因为这个。

我在想,为什么这两个函数的行为不同(是不是和引用传递有关),难道php不尝试标准化吗?

【问题讨论】:

  • 为什么他们的行为不同?只有原开发团队才能回答!为什么从那以后它们没有被标准化?向后兼容!你怎么知道他们的行为不同?您阅读了函数的 PHP 文档!
  • 别让我开始执行 needle, haystack 订单。嘘! :-) 但是rsort()sort() 的倒数,就像你想象的那样工作。因为排序和逆向确实是两个不同的东西。
  • 你是对的,PHP 存在标准化问题。
  • 不是基于意见,但无论如何得到了一个很好的答案
  • 如果你认为只有 PHP 是这样不一致的,考虑下面的 javascript 0 > null false 0 >= null true 0 == null false 0 <= null true 0 < null false

标签: php arrays sorting


【解决方案1】:

它们的行为不同,因为在sort$myArray 变量是通过引用传递的,这意味着对变量本身进行了操作,而在array_reverse() 中,变量不是通过引用传递的。您可以使用array_reverse(&$myArray) 来模拟这种行为,但请注意,自 PHP 5.3.0 起,按引用传递调用已被弃用,并且在 PHP 5.4.0 中已完全删除

至于为什么,我不知道。有些人以其无限的智慧决定,当你排序时,你必须要对实际数组进行排序,但当你反转时,你必须要将它保存到一个新的数组变量中。

在此处阅读有关通过引用传递的更多信息:http://www.php.net//manual/en/language.references.pass.php

在 PHP 中有很多类似的小怪事。这就是为什么我将 PHP 文档添加为书签,以便在这些情况下快速参考 :)

【讨论】:

  • 因为排序和倒车是两个不同的东西。
  • @JayBlanchard - 没有人建议他们执行相同的功能,只是让数组函数运行的方式不一致。
  • 是的...我知道。多年来,我一直看着开发团队为这些事情争论不休。
  • 我想所有语言都有它们的小不一致,你不得不爱恨。或者讨厌爱。或者什么...
  • 我知道你在那里做了什么。
猜你喜欢
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多