Я получаю массив (mysql_fetch_assoc()) из комнат в результате запроса mysql. Я хочу заказать этот массив «случайно», но с одним правилом. Каждый номер комнаты не может быть больше 2 выше или ниже следующего.Сортировать результат запроса случайный, но с определенными правилами (usort)
Теперь я предполагаю, что должен использовать usort, чтобы сделать это, но я не могу понять это. Я рассмотрел ряд вопросов и объяснений, но я просто не могу понять это правильно. Я уверен, что это не может быть так сложно, как в настоящее время я испытываю это ...
Это то, что я сейчас пытаюсь сделать.
shuffle($room_array);
function cmp($a, $b){
if ($a["room"] == $b["room"] || $a["room"]+2 == $b["room"]|| $a["room"]+1 == $b["room"]|| $a["room"]-2 == $b["room"]|| $a["room"]-1 == $b["room"]){
return 1;
}else return 0;
}
usort($room_array, "cmp");
Большое спасибо!
Спасибо за ответ! Пробовал это с помощью $ b ['room'] и ['room'], но безрезультатно. У меня есть три массива в списке. Один с номером 1, 3 или 5. Это означает, что я должен получить 1-3-5, 3-1-5 или 5-3-1, ... Однако я все еще получаю 5-1-3 или 3-1-5 иногда, с более широким разрывом, чем 2. – Jorgos
@Jorgos Ответ отредактирован, пожалуйста, попробуйте сейчас. – thecodeparadox
Это действительно правильное положение, но они всегда спускаются (5-3-1). Я хотел бы, чтобы порядок был случайным, так что 1-3-5 также может произойти или другие изменения, когда я расширяю базу данных. – Jorgos