如何在PHP中随机化一组对象?

时间:2012-07-10 19:21:30

标签: php arrays object random shuffle

我有一个对象数组的示例,每次进行foreach循环时我都需要随机化它。

看起来shuffle仅适用于数组。

有一件事是我无法将其转换为数组,因为它将成为我无法使用的STD object,因为我的映射器的工作方式。

array(48) {
  [0] => object(Friends_Model_Friends)#142 (4) {
    ["_id":protected] => NULL
    ["_tal":protected] => object(stdClass)#194 (3) {
      ["thumb"] => object(stdClass)#196 (6) {
        ["id"] => string(8) "10884697"
        ["type"] => string(1) "2"
        ["gallery"] => string(1) "1"
      }
    }
    ["_friend":protected] => string(7) "3492149"
    ["_dependent_table":protected] => NULL
  }
  [1] => object(Friends_Model_Friends)#195 (4) {
    ["_id":protected] => NULL
    ["_tal":protected] => object(stdClass)#143 (3) {
      ["thumb"] => object(stdClass)#202 (6) {
        ["id"] => string(8) "11160632"
        ["type"] => string(1) "2"
        ["gallery"] => string(1) "1"
      }
    }
    ["_friend":protected] => string(7) "3301541"
    ["_dependent_table":protected] => NULL
  }
....

关于洗牌的任何想法?

修改 Zend_Debug::dump(shuffle($object));返回bool(true)

3 个答案:

答案 0 :(得分:4)

<?php
$my_array;
echo '<pre>'; print_r($my_array); echo '</pre>';
shuffle ($my_array);
echo '<pre>'; print_r($my_array); echo '</pre>';
?>

试试此代码

答案 1 :(得分:3)

但是对象在数组中,而不是另一个对象,因此您可以使用shuffle ...

答案 2 :(得分:1)

随机播放总是返回一个布尔值:

bool shuffle ( array &$array )

所以你不能像

一样返回它
return shuffle( $myAwesomeArray );

这就是我刚才所做的事情,我想知道为什么它没有回馈任何东西,因为你可能期待你的洗牌阵列回来。

你只需要像这样称呼它

shuffle( $myAwesomeArray );
return $myAwesomeArray;

所有人都应该工作得很好。