Многомерный массив, найдите элемент и перейдите в начало?

Я пытаюсь выполнить какую-то функцию, которая найдет (в следующем массиве) объект с идентификатором 2 и переместит его в начало массива. Вот исходный массив:

Array ( [0] => stdClass Object ( [id] => 177 [startdate] => 2014-08-02 ) [1] => stdClass Object ( [id] => 178 [startdate] => 2014-08-02 ) [2] => stdClass Object ( [id] => 2 [startdate] => 2014-07-28 ) [3] => stdClass Object ( [id] => 82 [startdate] => 2014-07-28 ) [4] => stdClass Object ( [id] => 199 [startdate] => 2013-10-10 ) ) 

И вот что мне хотелось бы вывести (с перемещенным элементом массива):

 Array ( [0] => stdClass Object ( [id] => 2 [startdate] => 2014-07-28 ) [1] => stdClass Object ( [id] => 177 [startdate] => 2014-08-02 ) [2] => stdClass Object ( [id] => 178 [startdate] => 2014-08-02 ) [3] => stdClass Object ( [id] => 82 [startdate] => 2014-07-28 ) [4] => stdClass Object ( [id] => 199 [startdate] => 2013-10-10 ) ) 

Любая помощь будет оценена по достоинству.

 function customShift($array, $id){ foreach($array as $key => $val){ // loop all elements if($val->id == $id){ // check for id $id unset($array[$key]); // unset the $array with id $id array_unshift($array, $val); // unshift the array with $val to push in the beginning of array return $array; // return new $array } } } print_r(customShift($data, 2)); с function customShift($array, $id){ foreach($array as $key => $val){ // loop all elements if($val->id == $id){ // check for id $id unset($array[$key]); // unset the $array with id $id array_unshift($array, $val); // unshift the array with $val to push in the beginning of array return $array; // return new $array } } } print_r(customShift($data, 2));