在数组数组上使用PHP的array_reverse(),获得奇怪的行为。为什么?

时间:2012-04-05 16:59:37

标签: php arrays multidimensional-array

所以,array_reverse()应该采用一个数组,并以相反的顺序返回元素的副本,并且它始终忠实地为我工作,直到今天。我有一个数组数组,我需要以相反的顺序得到它们,所以我假设array_reverse会完全按照我的需要行事,但它似乎表现得很奇怪,我无法弄明白为什么。

我的初始数组(是的,我正在做一些HTML解析):

Array(
    0 => Array(
        0 => '<blockquote',
        1 => int 232
    ),
    1 => Array(
        0 => '<blockquote',
        1 => int 593
    ),
    2 => Array(
        0 => '<blockquote',
        1 => int 938
    ),
    3 => Array(
        0 => '</blockquote',
        1 => int 2627
    ),
    4 => Array(
        0 => '</blockquote',
        1 => int 2758
    ),
    5 => Array(
        0 => '</blockquote',
        1 => int 2794
    ),
)

在其上运行array_reverse($arr),可以预期返回的数组为:

Array (
    0 => Array(
        0 => '</blockquote',
        1 => int 2794
    ),
    1 => Array(
        0 => '</blockquote',
        1 => int 2758
    ),
    2 => Array(
        0 => '</blockquote',
        1 => int 2627
    ),
    3 => Array(
        0 => '<blockquote',
        1 => int 938
    ),
    4 => Array(
        0 => '<blockquote',
        1 => int 593
    ),
    5 => Array(
        0 => '<blockquote',
        1 => int 232
    ),
)

然而,它返回一个未改变的数组。现在,如果我做array_reverse($arr[0]),那么它就像我想要的那样反转整个数组。

我认为没有理由不会颠倒初始数组,为什么在传递特定键时,它会反转整个数组,而不是那个子数组。为什么会这样做?

编辑:我走开然后回来看了看,并意识到主阵列有一个元素就是我上面发布的数组。只是一个很好的'ID-10-T错误。

1 个答案:

答案 0 :(得分:1)

  

然而,它返回一个未改变的数组。

It should just work

  

现在,如果我执行array_reverse($arr[0]),那么它会像我想要的那样反转整个数组。

你确定阵列中没有额外的等级吗?我很确定你有额外的水平!