Str shuffle: примеры (PHP)
str_shuffle(string string): stringФункция str_shuffle в PHP
Функция str_shuffle перемешивает символы в строке случайным образом. Она используется для создания случайных последовательностей, анаграмм, генерации случайных строк на основе заданного набора символов или для простого перемешивания текста.
str_shuffle(string $string): string
Функция принимает один обязательный аргумент:
- $string (string) – исходная строка, символы которой будут перемешаны.
Возвращает строку с перемешанными символами. Поскольку перемешивание случайное, результат каждого вызова может отличаться.
Примеры использования str_shuffle
Перемешивание символов в слове.
$string = "hello";
echo str_shuffle($string);Пример результата: loleh
$string = "PHP 8";
echo str_shuffle($string);Пример результата: 8H P
$string = "a1b2c3";
echo str_shuffle($string);Пример результата: 2c3b1a
Похожие функции в PHP
Функция shuffle перемешивает элементы массива, изменяя исходный массив. Используется для случайного порядка элементов, а не символов.
Функция str_repeat повторяет строку заданное количество раз. Полезна для генерации строк из повторяющихся шаблонов, но без случайного порядка.
Функции для генерации криптографически безопасных случайных чисел и байтов. Предпочтительнее для создания паролей или токенов, где важна безопасность.
Типичные ошибки при использовании
Функция ожидает строку. Передача других типов приводит к предупреждению и преобразованию.
$result = str_shuffle(12345);
echo $result;Результат: 34251 (число преобразовано в строку)
Функция возвращает случайный результат при каждом вызове. Не следует ожидать одинакового вывода для одного ввода.
$string = "test";
echo str_shuffle($string) . "\n";
echo str_shuffle($string);Пример результата: tset estt
Функция не является криптографически безопасной. Для генерации паролей или токенов лучше использовать random_int или random_bytes.
Изменения в последних версиях PHP
В PHP 8.0.0 функция str_shuffle использует внутренний генератор случайных чисел Mersenne Twister. В более ранних версиях использовался генератор на базе libc, который мог вести себя по-разному в разных системах. Начиная с PHP 7.1.0, для случайной генерации используется внутренний алгоритм, а не системный.
Расширенные примеры использования
Создание пароля заданной длины из определенного набора символов.
function generatePassword($length, $chars) {
$shuffled = str_shuffle($chars);
return substr($shuffled, 0, $length);
}
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$";
echo generatePassword(10, $chars);Пример результата: d#7Lh!9KpA
Перемешивание букв в слове для создания возможных анаграмм.
$word = "кот";
$anagram = str_shuffle($word);
echo "Анаграмм для слова '$word': " . $anagram;Пример результата: Анаграмм для слова 'кот': кто
Разбиение предложения на слова и перемешивание букв внутри каждого слова.
$sentence = "Пример предложения";
$words = explode(" ", $sentence);
foreach ($words as &$word) {
$word = str_shuffle($word);
}
echo implode(" ", $words);Пример результата: рмиПер рпдеежнеи
Многократное перемешивание для достижения более случайного результата.
$string = "abcdef";
for ($i = 0; $i < 5; $i++) {
$string = str_shuffle($string);
}
echo $string;Пример результата: fceabd
Аналоги функции в других языках
Str shuffle в Python
В Python используется модуль random и функция shuffle для списков. Для строк требуется преобразование.
import random
string = "hello"
char_list = list(string)
random.shuffle(char_list)
result = ''.join(char_list)
print(result)Пример результата: olelh
Str shuffle в Javascript
В JavaScript нет встроенной функции. Реализуется через преобразование строки в массив, использование метода sort со случайной сортировкой и обратное преобразование.
let string = "hello";
let shuffled = string.split('').sort(() => Math.random() - 0.5).join('');
console.log(shuffled);Пример результата: lloeh
Str shuffle в MySQL
В MySQL прямой аналогии нет. Для простых задач можно использовать подзапросы или хранимые процедуры для случайного порядка символов.