随机顺序的多维数组

时间:2011-06-15 08:46:37

标签: php

我想这样做,以便我的多维数组是随机顺序。你会怎么做?

// This is how the array looks like
print_r($slides);

Array
(
    [0] => Array
        (
            [id] => 7
            [status] => 1
            [sortorder] => 0
            [title] => Pants
        )

    [1] => Array
        (
            [id] => 8
            [status] => 1
            [sortorder] => 0
            [title] => Jewels
        )

    [2] => Array
        (
            [id] => 9
            [status] => 1
            [sortorder] => 0
            [title] => Birdhouse
        )

    [3] => Array
        (
            [id] => 10
            [status] => 1
            [sortorder] => 0
            [title] => Shirt
        )

    [4] => Array
        (
            [id] => 11
            [status] => 1
            [sortorder] => 0
            [title] => Phone
        )

)

// This how the result is if I use array_rand()
print_r(array_rand($slides, 5));

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
)

// This how the result is if I use shuffle()
print_r(shuffle($slides));

1

4 个答案:

答案 0 :(得分:19)

shuffle()是去这里的方式。它会打印1,因为shuffle会更改数组就地并返回一个布尔值,因为它写在documentation中:

  

成功时返回 TRUE ,失败时返回 FALSE

我建议您也阅读documentation of array_rand()

  

从数组中选择一个或多个随机条目,并返回随机条目的键(或键)


如果使用内置函数,请务必阅读文档。不要只是假设如何工作。我敢打赌,写这个问题比花时间更多。

答案 1 :(得分:1)

而不是

print_r(shuffle($slides));

DO

shuffle($slides);
print_r($slides);

您看到shuffle()就地对阵列进行洗牌

答案 2 :(得分:1)

我不确定你希望它如何显示,但你可以循环数组并使用php rand(0,arraylen)函数来解析数组。

答案 3 :(得分:0)

它完美无缺。 print_r(shuffle($ slides)))给出输出TRUE,因为shuffle的返回值是布尔值而不是数组。

请参阅此处的工作示例:http://codepad.org/B5SlcjGf