Str shuffle: примеры (PHP)

Работа с функцией 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

array_shuffle

Функция shuffle перемешивает элементы массива, изменяя исходный массив. Используется для случайного порядка элементов, а не символов.

Функция str_repeat повторяет строку заданное количество раз. Полезна для генерации строк из повторяющихся шаблонов, но без случайного порядка.

random_int и random_bytes

Функции для генерации криптографически безопасных случайных чисел и байтов. Предпочтительнее для создания паролей или токенов, где важна безопасность.

Типичные ошибки при использовании

Передача нестрокового аргумента

Функция ожидает строку. Передача других типов приводит к предупреждению и преобразованию.

$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, для случайной генерации используется внутренний алгоритм, а не системный.

Расширенные примеры использования

Генерация случайного пароля

Создание пароля заданной длины из определенного набора символов.

Пример php
function generatePassword($length, $chars) {
    $shuffled = str_shuffle($chars);
    return substr($shuffled, 0, $length);
}
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$";
echo generatePassword(10, $chars);
Пример результата: d#7Lh!9KpA
Создание анаграмм

Перемешивание букв в слове для создания возможных анаграмм.

Пример php
$word = "кот";
$anagram = str_shuffle($word);
echo "Анаграмм для слова '$word': " . $anagram;
Пример результата: Анаграмм для слова 'кот': кто
Перемешивание слов в предложении

Разбиение предложения на слова и перемешивание букв внутри каждого слова.

Пример php
$sentence = "Пример предложения";
$words = explode(" ", $sentence);
foreach ($words as &$word) {
    $word = str_shuffle($word);
}
echo implode(" ", $words);
Пример результата: рмиПер рпдеежнеи
Случайная сортировка строки

Многократное перемешивание для достижения более случайного результата.

Пример php
$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 прямой аналогии нет. Для простых задач можно использовать подзапросы или хранимые процедуры для случайного порядка символов.

PHP str_shuffle function comments

En
Str shuffle Randomly shuffles a string