Q:

Randomize elements with same value

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?  

A:

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

