三次元の配列に関してもforeach文を二段階にすることで並び替えや重複のチェックが可能です。
またforeach文は以下のような形にするとよりコンパクトなコードになります。
foreach($building_ids as $building_id){ $sort_array = $room_array[$building_id]; .... }
↓
foreach($room_array as $building_id => $sort_array){ .... }
$new_room_ids = array(); foreach($room_array as $building_id => $layouts) { foreach($layouts as $layout => $rooms){ $sort = array(); foreach ($rooms as $room) { $sort[] = $room['rent']; } array_multisort($sort, SORT_ASC, SORT_NUMERIC, $rooms); $new_room_ids[] = $rooms[0]['ID']; } }