0

私はこのような多次元配列を持っています:

Array
(
    [site1] => Array
        (
            [0] => Array
                (
                    [0] => data
                    [1] => data
                    [2] => data
                    [3] => data
                )

            [1] => Array
                (
                    [0] => data
                    [1] => data
                    [2] => data
                    [3] => data

                )

            [2] => Array
                (
                    [0] => data
                    [1] => data
                    [2] => data
                    [3] => data

                )

    [site2] => Array
        (
            [0] => Array
                (
                    [0] => data
                    [1] => data
                    [2] => data
                    [3] => data
                )

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

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

各サイト([site1]、[site2])のデータをランダム化しようとしていますが、サイト間でデータを混在させないでください。したがって、2番目のタイヤのランダム化のようになります。

たとえば、ランダム化後、[site1]の位置[0]には異なるデータが含まれ、前の位置[3]のデータである可能性があります。

それを行う方法はありますか?

4

3 に答える 3

3

関数を配列にマップします。shuffle

$shuffle = function($array) {
    $r = shuffle($array);
    return $array;
};

$sites = array_map($shuffle, $sites);

または:

foreach ($sites as &$site) shuffle($site);
unset($site);
于 2012-09-23T21:38:18.333 に答える
1
foreach($sites as $i => $site) {
   shuffle($sites[$i]);
}
于 2012-09-23T21:37:40.327 に答える
0

別の、(シャッフルほど良くない)方法;-)

foreach ($site as $key => $data) {
  $values = array();
  $rand   = array_rand($data, count($data));
  for ($i = 0; $i < count($rand); $i++)) {
    $values[] = $site[$key][$rand[$i]];  
  }
  $site[$key] = $values;
}
于 2012-09-23T21:50:41.373 に答える