#php #sorting #numbers
#php #сортировка #числа
Вопрос:
Я создаю форму входа / регистрации на PHP и для подтверждения того, действительно ли кто-то является человеком, а не ботом, я генерирую случайное значение, которое должно быть записано определенным образом. Например:
Пожалуйста, напишите следующее число по возрастанию: 34745 Пользователь должен написать 34457, и только тогда будет работать подтверждение.
Дело в том, что я знаю, как использовать функцию rand(), вот как я генерирую число. Но проблема в том, что я не знаю, как заставить PHP сортировать числовые значения сгенерированного числа (например: 64348 -> 34468). Как мне это сделать? Я надеюсь, что для этого есть одна функция, поскольку я видел множество способов сортировки массивов, и поскольку у них есть индексы, я только предполагаю, что должна быть возможность сортировать значения числа.
Ответ №1:
<?php
$number = str_split("647214");
sort($number);
$number = implode($number);
echo $number;
?>
Демо-версия: http://codepad.viper-7.com/RepImd
Комментарии:
1. @user1020567: Пожалуйста, примите вопрос, см. meta.stackexchange.com/questions/5234 /…
Ответ №2:
Вместо того чтобы использовать целое число для хранения полного числа, вы могли бы создать массив размером n (n — количество цифр). Выполните итерацию по массиву и используйте rand() для создания случайных чисел от 0 до 9 в каждой позиции массива. Теперь у вас есть массив, который можно отсортировать с помощью стандартных функций сортировки.
Ответ №3:
Я не думаю, что у него есть одна функция, но вы можете это сделать.
$num = 34745;
$chars = preg_split('/ /', $num, -1, PREG_SPLIT_OFFSET_CAPTURE);
sort($chars);
$res = implode("", $chars);
echo $res;
Я не тестировал это, но надеюсь, что это сработает!
Комментарии:
1. Другой пользователь опубликовал аналогичный пример. Спасибо вам обоим!