php 从数组中取值,PHP 怎样随机获取数组中的值

使用 PHP 提供的 array_rand 函数可以随机获取数组中的一个值,该函数返回的是函数的索引,还需要根据索引值获取数组的实际值。

array_rand 接收一个必传参数。可以 num 表示需要获取随机的个数,默认为取出一个值,取出数量如果超过 array 的长度,就会导致 E_WARNING 错误,并返回 NULL。

随机获取数组中的一个值

第一种: 使用 array_rand 函数随机返回数组中的一个 key 值,再根据 key 返回数组实际值,如下所示:

/**

*

* 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 示例,随机获取数组的值

*

* @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 示例,随机获取数组的值

*

* @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

以上函数使用伪随机数产生器,并不适合密码学的场合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值