如何从PHP中的数组获取最小值的随机索引

时间:2019-09-07 09:22:02

标签: php arrays random

我有一个像这样的数组:

$a[0] = 2;
$a[1] = 7;
$a[2] = 5;
$a[3] = 2;
$a[4] = 2;
$a[5] = 3;

我想获得此数组中只有最小值的随机索引。
在上面的数组中,该函数应返回0或3或4,因为 2 是该数组中的唯一最小值。

2 个答案:

答案 0 :(得分:2)

<?php


$a = [];
$a[0] = 2;
$a[1] = 7;
$a[2] = 5;
$a[3] = 2;
$a[4] = 2;
$a[5] = 3;


$min_val = min($a);

$min_indexes = [];
foreach($a as $i => $val){
    if($val == $min_val) $min_indexes[] = $i;
}

print_r($min_indexes);
echo $min_indexes[rand(0,count($min_indexes)-1)];

演示: https://3v4l.org/PXcq4

首先,从数组中获取min值。现在,收集具有此最小值的所有索引。现在,使用rand()从过滤后的集合的索引中生成随机数。

答案 1 :(得分:1)

您可以通过array_keysarray_fliparray_rand个功能min

echo array_rand(array_flip(array_keys ($a, min($a))));

实时示例:-https://3v4l.org/b4La1