【问题标题】:How to randomize an array of objects in PHP?如何在 PHP 中随机化一组对象?
【发布时间】:2012-07-10 19:21:30
【问题描述】:

我有一个对象数组的示例,每次执行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)

【问题讨论】:

  • 你说你有一个数组,但是你说shuffle只适用于数组,你不能把它[数组]转换成数组,因为它会变成一个东西?对不起,但这对我来说完全没有意义......
  • 那么,您是否尝试过shuffle() 并没有对数组进行洗牌?
  • @Patrioticcow 您从shuffle() 通话中得到什么结果?它以什么方式不起作用?你能显示你用来调用它的代码吗?
  • 如果我这样做Zend_Debug::dump(shuffle($object)); 我会得到bool(true)
  • @Patrioticcow shuffle() 打乱数组,但返回一个布尔值。

标签: php arrays object random shuffle


【解决方案1】:
<?php
$my_array;
echo '<pre>'; print_r($my_array); echo '</pre>';
shuffle ($my_array);
echo '<pre>'; print_r($my_array); echo '</pre>';
?>

试试这个代码

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Shuffle 总是返回一个布尔值:

      bool shuffle ( array &$array )
      

      所以你不能像这样退货

      return shuffle( $myAwesomeArray );
      

      这就是我刚刚所做的,我想知道为什么它没有返回任何东西,因为你可能期待你的洗牌数组返回。

      你只需要这样称呼它

      shuffle( $myAwesomeArray );
      return $myAwesomeArray;
      

      一切都应该正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        • 2017-08-01
        • 1970-01-01
        • 2021-07-17
        相关资源
        最近更新 更多