php - array_rand 为什么会在 range(1, 20) 中得到 0

标签 php

为什么 array_rand() 返回 0?我怎样才能过滤掉0?我只想得到 1-20。

$range = range(1, 20); 
$total = array();
for($i = 0; $i < 100; $i++){
    shuffle($range);
    array_push($total, array_rand($range, 3));
}

最佳答案

array_rand() 返回数组中的键,range() 构建了一个起始键为 0 的数组.尝试:

$range = array_combine($range = range(1, 20), $range); 

或者将键视为值而不使用实际值:

$range = array_flip(range(1, 20)); 

但是,您已经打乱了数组,因此不需要 array_rand(),只需从头开始切片 3:

$range = range(1, 20); 

for($i = 0; $i < 100; $i++){
    shuffle($range);
    $total[] = array_slice($range, 0, 3);
}

关于php - array_rand 为什么会在 range(1, 20) 中得到 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42257761/

相关文章:

php - 使用 PHP DOM 将 PostgreSQL 查询结果转换为 XML

php - 现场维护中。如何重定向访问者?

php - 调用非对象的成员函数 InnerJoin()

php - mysql 将多条数据插入单列或多行

PHP 阻止表单文本字段中的 HTML?

php - 连接两个 MySQL 表,其中连接条件来自其中一个表

php - 我的数组在 php 中未正确生成

php - 如何使用javascript捕获缓存清除事件?

php - 使用php将mysql数据拆分为3个bootstrap md列

php - PHAR签名如何防止文件被篡改?