Как отсортировать каждое числовое значение в числе?

#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. Другой пользователь опубликовал аналогичный пример. Спасибо вам обоим!