1

所以我有一个关联数组,我想从中返回 2 个随机值。此代码仅返回 1 个数组值,即随机 4 个数字中的任何一个。

$array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
$key = array_rand($array); //array_rand($array,2); Putting 2 returns Illegal offset type
$value = $array[$key];
print_r($value); //prints a single random value (ex. 3)

如何仅从数组值中返回 2 个逗号分隔值?3,4之类的?

4

4 回答 4

5

array_rand接受一个额外的可选参数,该参数指定您想要从数组中取出多少个随机条目。

$input_array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
$rand_keys = array_rand($input_array, 2);
echo $input_array[$rand_keys[0]] . ',' . $input_array[$rand_keys[1]];

在此处查看 array_rand 的 PHP 文档。

于 2012-06-02T23:11:23.567 回答
1

用 抓取数组中array_keys()的键shuffle(),用 打乱键,并打印出与打乱的键数组中的前两个键对应的值,如下所示:

$array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
$keys = array_keys( $array);
shuffle( $keys);
echo $array[ $keys[0] ] . ',' . $array[ $keys[1] ];

演示

或者,您可以使用array_rand()的第二个参数来获取两个键,如下所示:

$array = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4);
$keys = array_rand( $array, 2);
echo $array[ $keys[0] ] . ',' . $array[ $keys[1] ];

演示

于 2012-06-02T23:09:15.467 回答
0

有一种更有效的方法可以保留键和值。

function shuffle_assoc(&$array) {
        $keys = array_keys($array);

        shuffle($keys);

        foreach($keys as $key) {
            $new[$key] = $array[$key];
        }

        $array = $new;

        return true;
    }

在此处查看文档

于 2022-02-01T12:33:20.267 回答
-1
$a=rand(0,sizeof($array));
$b=$a;
while ($a==$b) $b=rand(0,sizeof($array));

$ar=array_values($array);
$element1=$ar[$a];
$element2=$ar[$b];

shuffle()如果数组很大,应该比和 freinds 更有效。

于 2012-06-02T23:12:42.173 回答