PHP 7.4.24 Released!

array_rand

(PHP 4, PHP 5, PHP 7, PHP 8)

array_randBir diziden belli sayıda rasgele anahtar döndürür

Açıklama

array_rand(array $dizi, int $istek_sayısı = 1): int|string|array

array_rand() işlevi bir diziden belli sayıda rasgele eleman seçer ve bunların anahtarlarını döndürür. Kriptografik amaçlara uygun olmayan sözde bir rasgele sayı üreteci kullanır.

Değiştirgeler

dizi

İşleme sokulacak dizi.

istek_sayısı

Kaç tane rasgele eleman döndürüleceği belirtilir.

Dönen Değerler

Sadece bir girdi alınmak istenirse array_rand() işlevi diziden rasgele bir anahtarla döner. Aksi takdirde, rasgele elemanların anahtarlarını içeren bir dizi döndürür. Böylece, diziden rasgele anahtarlar değerleriyle birlikte bir dizi olarak çekilmiş olur. Birden fazla anahtar döndürülüyorsa, bunlar dizideki yerlerine uygun sırada çekilir. Dizideki öğe sayısından daha fazla öğe çekilmek istenirse E_WARNING seviyesinde bir hata oluşur.

Sürüm Bilgisi

Sürüm: Açıklama
7.1.10 Dahili rasgelelik algoritması değiştirildi. Libc rand işlevi yerine artık » Mersenne Twister Rasgele Sayı Üreteci kullanılıyor.
4.2.0Rasgele sayı üreteci otomatik tohumlanır.

Örnekler

Örnek 1 - array_rand() örneği

<?php
$input 
= array("Neo""Morpheus""Trinity""Cypher""Tank");
$rand_keys array_rand($input2);
echo 
$input[$rand_keys[0]] . "\n";
echo 
$input[$rand_keys[1]] . "\n";
?>

Ayrıca Bakınız

add a note add a note

User Contributed Notes 4 notes

up
61
Anonymous
11 years ago
If the array elements are unique, and are all integers or strings, here is a simple way to pick $n random *values* (not keys) from an array $array:

<?php array_rand(array_flip($array), $n); ?>
up
25
Anonymous
9 years ago
It doesn't explicitly say it in the documentation, but PHP won't pick the same key twice in one call.
up
14
grzeniufication
3 years ago
<?php

/**
* Wraps array_rand call with additional checks
*
* TLDR; not so radom as you'd wish.
*
* NOTICE: the closer you get to the input arrays length, for the n parameter, the  output gets less random.
* e.g.: array_random($a, count($a)) == $a will yield true
* This, most certainly, has to do with the method used for making the array random (see other comments).
*
* @throws OutOfBoundsException – if n less than one or exceeds size of input array
*
* @param array $array – array to randomize
* @param int $n – how many elements to return
* @return array
*/
function array_random(array $array, int $n = 1): array
{
    if (
$n < 1 || $n > count($array)) {
        throw new
OutOfBoundsException();
    }

    return (
$n !== 1)
        ?
array_values(array_intersect_key($array, array_flip(array_rand($array, $n))))
        : array(
$array[array_rand($array)]);
}
up
14
grzeniufication
3 years ago
<?php
// An example how to fetch multiple values from array_rand
$a = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g' ];
$n = 3;

// If you want to fetch multiple values you can try this:
print_r( array_intersect_key( $a, array_flip( array_rand( $a, $n ) ) ) );

// If you want to re-index keys wrap the call in 'array_values':
print_r( array_values( array_intersect_key( $a, array_flip( array_rand( $a, $n ) ) ) ) );
To Top