随机化具有相同值的元素

Hello stackoverflow community. I need help with arrays. It's my weakness. I've got this kind of array:

Array
(
    [0] => Array
        (
            [id] => 7
            [slot] => 1
            [name] => Apple
            [start_date] => 12/16/2015
            [end_date] => 03/10/2016
            [status] => 1
            [pre_exp_email] => 0
        )

    [1] => Array
        (
            [id] => 8
            [slot] => 1
            [name] => Cherry
            [start_date] => 12/29/2015
            [end_date] => 03/20/2016
            [status] => 1
            [pre_exp_email] => 0
        )

    [2] => Array
        (
            [id] => 5
            [slot] => 3
            [name] => Bananna
            [start_date] => 11/30/2015
            [end_date] => 00/00/0000
            [status] => 1
            [pre_exp_email] => 0
        )

    [3] => Array
        (
            [id] => 1
            [slot] => 4
            [name] => Kiwi
            [start_date] => 11/21/2015
            [end_date] => 12/21/2016
            [status] => 1
            [pre_exp_email] => 0
        )

)

And my job is to randomize elements which has same [slot], but leave order ascending. For example now it is:

1 Apple 1 Cherry 3 Bannana 4 Kiwi

I need to randomize those elements who has same slot number. So Apple and Cherry would swap positions. How can I do this stuff?

Make a new array from the original having slot as keys

$elements = array(
    0 => Array
        (
            'id' => 7,
            'slot' => 1
        ),

    1 => Array
        (
            'id' => 8,
            'slot' => 1
        ),

    2 => Array
        (
            'id' => 9,
            'slot' => 1
        ),
    3 => Array
        (
            'id' => 9,
            'slot' => 5
        )
);

foreach($elements as $element){
    $newArray[$element['slot']][] = $element; //put every element having the same slot
}
$elementSlots = array_keys($newArray); // all slots are stored in elementSlots
$Result = array();
foreach($elementSlots as $slot) {
    shuffle($newArray[$slot]); //randomize elements having the same slot
    foreach($newArray[$slot] as $element) { //add them to the result array
        $Result[$slot][] = $element;//For output 1
        //$Result[] = $element; //For output 2
    }
}
var_dump($Result);

Output 1:

array (size=2)
  1 => 
    array (size=3)
      0 => 
        array (size=2)
          'id' => int 7
          'slot' => int 1
      1 => 
        array (size=2)
          'id' => int 9
          'slot' => int 1
      2 => 
        array (size=2)
          'id' => int 8
          'slot' => int 1
  5 => 
    array (size=1)
      0 => 
        array (size=2)
          'id' => int 9
          'slot' => int 5

Output 2:

array (size=4)
  0 => 
    array (size=2)
      'id' => int 7
      'slot' => int 1
  1 => 
    array (size=2)
      'id' => int 9
      'slot' => int 1
  2 => 
    array (size=2)
      'id' => int 8
      'slot' => int 1
  3 => 
    array (size=2)
      'id' => int 9
      'slot' => int 5

Update : Using shuffle & usort :

shuffle($fruits); 
function cmp($a, $b) {
  if ($a['slot'] == $b['slot']) {
    return 0;
  }
  return ($a['slot'] < $b['slot']) ? -1 : 1;
}

usort($fruits, "cmp");