PHP 怎樣隨機獲取數組中的值
最近更新時間 2020-12-13 19:12:59
使用 PHP 提供的 array_rand 函數可以隨機獲取數組中的一個值,該函數返回的是函數的索引,還需要根據索引值獲取數組的實際值。
array_rand 接收一個必傳參數。可以 num 表示需要獲取隨機的個數,默認為取出一個值,取出數量如果超過 array 的長度,就會導致 E_WARNING 錯誤,並返回 NULL。
隨機獲取數組中的一個值
第一種: 使用 array_rand 函數隨機返回數組中的一個 key 值,再根據 key 返回數組實際值,如下所示:
<?php
/**
*
* PHP 示例,隨機獲取數組的值
*
* @since Version 1.0.0
* @filesource
*/
class ArrayHelper {
// 隨機返回一個數組的值,返回值類型由數組的值決定
public static function arrayRand($arr) {
// 返回數組隨機值
return $arr[array_rand($arr)];
}
}
// Testing
$arr = array("Home", "Explore", "Messages");
$rand = ArrayHelper::arrayRand($arr);
print_r($rand);
Explore
如果 $arr 數組的值為空,函數返回 Null
,不會拋出任何異常。
第二種: 如果 $arr 是一維數組,還可以使用 array_flip 函數實現隨機獲取一個值。如果 $arr 的值是一個二維數組,該元素會被忽略。如下所示:
<?php
/**
*
* PHP 示例,隨機獲取數組的值
*
* @since Version 1.0.0
* @filesource
*/
class ArrayHelper {
public static function arrayRandFlip($arr) {
// 交換數組中的鍵和值
$flipped = array_flip($arr);
// 使用 array_rand 隨機返回 key 值
return array_rand($flipped);
}
}
// Testing
$arr = array("Home", "Explore", "Messages");
$rand = ArrayHelper::arrayRandFlip($arr);
print_r($rand);
Messages
第三種: 可以使用 shuffle 函數實現隨機獲取一個值,如下所示:
<?php
/**
*
* PHP 示例,隨機獲取數組的值
*
* @since Version 1.0.0
* @filesource
*/
class ArrayHelper {
public static function arrayRandShuffle($arr) {
// 使用 array_keys 獲取數組的 key 值
$keys = array_keys($arr);
// 打亂 keys 數組
shuffle($keys);
// 返回隨機數組的值
return $arr[$keys[0]];
}
}
// Testing
$arr = array("Home", "Explore", "Messages");
$rand = ArrayHelper::arrayRandShuffle($arr);
print_r($rand);
Home
以上函數使用偽隨機數產生器,並不適合密碼學的場合。