shuffle for associative arrays, preserves key=>value pairs.
(Based on (Vladimir Kornea of typetango.com)'s function)
<?php
function shuffle_assoc(&$array) {
$keys = array_keys($array);
shuffle($keys);
foreach($keys as $key) {
$new[$key] = $array[$key];
}
$array = $new;
return true;
}
?>
*note: as of PHP 5.2.10, array_rand's resulting array of keys is no longer shuffled, so we use array_keys + shuffle.shuffle
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
shuffle
Референца за `function.shuffle.php` со подобрена типографија и навигација.
shuffle
(PHP 4, PHP 5, PHP 7, PHP 8)
shuffle — Измешај низа
= NULL
Оваа функција ги меша (на случаен начин ги распоредува елементите во) низа.
Оваа функција не генерира криптографски сигурни вредности, и Ако завршниот идентификатор е вовлечен, може да се користат и табулатори, но табулаторите и празнините да се користи за криптографски цели, или цели што бараат вратените вредности да бидат непредвидливи.
Ако е потребна криптографски сигурна случајност, Random\Randomizer може да се користи со Random\Engine\Secure engine. За едноставни случаи на употреба, random_int() and random_bytes() функциите обезбедуваат удобен и сигурен API што е поддржано од оперативниот систем CSPRNG.
Оваа функција ја користи глобалната Mt19937 („Mersenne Twister“) инстанца како извор на случајност и на тој начин ја споделува својата состојба со сите други функции што ја користат глобалната Mt19937. Користењето на која било од овие функции ја напредува секвенцата за all другите функции, без оглед на опсегот.
Генерирање повторливи секвенци со поставување семе mt_srand() or srand() со позната вредност, исто така, ќе даде повторлив излез од оваа функција.
Претпочитајте да користите Random\Randomizer методи во целиот новонапишан код.
Параметри
array-
Низата.
Вратени вредности
Секогаш враќа true.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 7.1.0 | Внатрешниот алгоритам за рандомизација е променет за да се користи » Мерсен Твистер Генератор случајних бројева уместо libc rand функције. |
Примери
Пример #1 shuffle() example
<?php
$numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}
?>Белешки
Забелешка: Оваа функција доделува нови клучеви на елементите во
arrayЌе отстрани какви било постоечки клучеви што можеби биле доделени, наместо само да ги преуреди клучевите.
Забелешка:
Ги ресетира внатрешниот покажувач на низата на првиот елемент.
Види Исто така
- Random\Randomizer::shuffleBytes() - Добијте пермутацију низа
- (PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8) - Добијте пермутацију низа по бајтовима
- Random\Randomizer::pickArrayKeys() - Изберете случајни клучеви од низа
- На споредба на функции за сортирање на списоци
Белешки од корисници 2 забелешки
If you want the Power Set (set of all unique subsets) of an array instead of permutations, you can use this simple algorithm:
<?php
/**
* Returns the power set of a one dimensional array,
* a 2-D array.
* array(a,b,c) ->
* array(array(a),array(b),array(c),array(a,b),array(b,c),array(a,b,c))
*/
function powerSet($in,$minLength = 1) {
$count = count($in);
$members = pow(2,$count);
$return = array();
for ($i = 0; $i < $members; $i++) {
$b = sprintf("%0".$count."b",$i);
$out = array();
for ($j = 0; $j < $count; $j++) {
if ($b{$j} == '1') $out[] = $in[$j];
}
if (count($out) >= $minLength) {
$return[] = $out;
}
}
return $return;
}
?>