PHP 8.5.0 Beta 3 available for testing

Random\Randomizer::shuffleBytes

(PHP 8 >= 8.2.0)

Random\Randomizer::shuffleBytes โ€” ๆŒ‡ๅฎšใ•ใ‚ŒใŸๆ–‡ๅญ—ๅˆ—ใฎใ€ใƒใ‚คใƒˆๅ˜ไฝใฎ้ †ๅˆ—ใ‚’ๅ–ๅพ—ใ™ใ‚‹

่ชฌๆ˜Ž

public Random\Randomizer::shuffleBytes(string $bytes): string

ๆŒ‡ๅฎšใ•ใ‚ŒใŸ bytes ใฎใ‚ใ‚Šๅพ—ใ‚‹้ †ๅˆ—ใ‹ใ‚‰ใ€ ็ญ‰็ขบ็އใซ้ธใฐใ‚ŒใŸ้ †ๅˆ—ใ‚’่ฟ”ใ—ใพใ™ใ€‚

ๆŒ‡ๅฎšใ•ใ‚ŒใŸ bytes ใฎใ‚ใ‚Šๅพ—ใ‚‹้ †ๅˆ—ใใ‚Œใžใ‚ŒใŒใ€่ฟ”ใ•ใ‚Œใ‚‹็ขบ็އใฏ็ญ‰ใ—ใใชใ‚Šใพใ™ใ€‚

ใƒ‘ใƒฉใƒกใƒผใ‚ฟ

bytes

ใƒใ‚คใƒˆๅ˜ไฝใงใ‚ทใƒฃใƒƒใƒ•ใƒซใ™ใ‚‹ๆ–‡ๅญ—ๅˆ—

ๆŒ‡ๅฎšใ•ใ‚ŒใŸๆ–‡ๅญ—ๅˆ—ใฏๅค‰ๆ›ดใ•ใ‚Œใพใ›ใ‚“ใ€‚

ๆˆปใ‚Šๅ€ค

bytes ใฎใ€ ใƒใ‚คใƒˆๅ˜ไฝใฎ้ †ๅˆ—ใ‚’่ฟ”ใ—ใพใ™ใ€‚

ใ‚จใƒฉใƒผ / ไพ‹ๅค–

ไพ‹

ไพ‹1 Random\Randomizer::shuffleBytes() ใฎไพ‹

<?php
$r
= new \Random\Randomizer();

// ๆ–‡ๅญ—ๅˆ—ไธญใฎใƒใ‚คใƒˆๅˆ—ใ‚’ใ‚ทใƒฃใƒƒใƒ•ใƒซใ—ใพใ™
echo "ยซ", $r->shuffleBytes("PHP is great!"), "ยป\n";
?>

ไธŠใฎไพ‹ใฎๅ‡บๅŠ›ใฏใ€ ใŸใจใˆใฐไปฅไธ‹ใฎใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚

ยซ ga rHs!PPietยป

ไพ‹2 ใƒใ‚คใƒˆๅ˜ไฝใงใ‚ทใƒฃใƒƒใƒ•ใƒซใ™ใ‚‹ใจUnicodeๆ–‡ๅญ—ใฏๅฃŠใ‚Œใ‚‹

<?php
$r
= new \Random\Randomizer();

$unicode = "๐ŸŽ, ๐Ÿฅ, ๐ŸŒ, ๐Ÿ‘, ๐Ÿ‡";
$shuffled = $r->shuffleBytes( $unicode );

// ใƒใ‚คใƒˆๅ˜ไฝใง ASCII ใงใชใ„ๆ–‡ๅญ—ใ‚’ใ‚ทใƒฃใƒƒใƒ•ใƒซใ™ใ‚‹ใจใ€ๅ€คใŒๅฃŠใ‚Œใฆใ—ใพใ„ใพใ™ใ€‚
// ใใฎ็ตๆžœใ€(Unicode ็ฝฎๆ›ๆ–‡ๅญ—ใซใ‚ˆใฃใฆ็คบใ•ใ‚Œใ‚‹)ไธๆญฃใชใ‚ทใƒผใ‚ฑใƒณใ‚นใŒ็”Ÿๆˆใ•ใ‚ŒใŸใ‚Šใ€
// ๅฎŒๅ…จใซ็•ฐใชใ‚‹ๆ–‡ๅญ—ใŒๅ‡บๅŠ›ใซ็พใ‚ŒใŸใ‚Šใ—ใพใ™ใ€‚
echo "Original: ", $unicode, "\n";
echo
"Shuffled: ยซ", $shuffled, "ยป\n";
echo
"Shuffled Bytes: ", bin2hex($shuffled), "\n";
?>

ไธŠใฎไพ‹ใฎๅ‡บๅŠ›ใฏใ€ ใŸใจใˆใฐไปฅไธ‹ใฎใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚

Original: ๐ŸŽ, ๐Ÿฅ, ๐ŸŒ, ๐Ÿ‘, ๐Ÿ‡
Shuffled: ยซ๏ฟฝ ๏ฟฝ๏ฟฝ,๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๐ŸŸ,๏ฟฝ ๏ฟฝ๏ฟฝ ๏ฟฝ, ๏ฟฝ,๏ฟฝ๏ฟฝยป
Shuffled Bytes: 87208e912c8d9fa5f0f0f09f8d9f2cf09f208c9d20f02c209f2c8d8d
๏ผ‹add a note

User Contributed Notes 1 note

up
1
okerem@github ยถ
1 year ago
For a unicode-safe shuffling;

<?php
$r
= new \Random\Randomizer();
$s = join($r->shuffleArray(mb_str_split($string)));
To Top