【问题标题】:How randomized array keys with rand() works?带有 rand() 的随机数组键如何工作?
【发布时间】:2016-08-06 06:35:51
【问题描述】:

我对它的工作原理有点困惑(标题)? 例如,我正在设置这样的数组

$array[rand(0, 5)] = 'Alex';
$array[rand(0, 5)] = 'Blue';
$array[rand(0, 5)] = 'Dale';
$array[rand(0, 5)] = 'Matt';

数组的var_dump($array); 之后的可能结果示例:

Array
(
    [0] => Blue
    [1] => Dale
    [2] => Matt
)

技术上会发生什么?

【问题讨论】:

  • 你用随机键为每个值构造数组。rand(0,5) 意味着它需要 0-5 之间的任何一个,但可能是键覆盖问题在这里。它是最好的例子。多次运行这个并知道每个输出。您可以看到重复的键
  • 好的。那是因为随机化的重复值,但是其他值呢?我应该使用数组函数来保留另一个值但使用另一个键吗?
  • 你不能为另一个值存储相同的键,所以数组值被省略
  • 试试这个 $ss = array('1'=>'sdfdsf','1'=>'oooo'); print_r($ss);在这里你只能看到这个数组中最后插入的值。

标签: php arrays random


【解决方案1】:

您为每个值使用随机键构造数组 .rand(0,5) 意味着它需要 0-5 之间的任何一个数字,但可能是键覆盖问题在这里。 它是最好的例子。多次运行这个并知道每个输出。您可以看到键重复

    <?php 

    $array1[rand(0, 5)] = 'Alex'; 
    $array2[rand(0, 5)] = 'Blue'; 
    $array3[rand(0, 5)] = 'Dale'; 
    $array4[rand(0, 5)] = 'Matt'; 

    print_r($array1); 
    print_r($array2); 
    print_r($array3); 
    print_r($array4); 


    output:

    out put differ each time .here you can see the key repetation . 

        Array ( [4] => Alex ) 
        Array ( [3] => Blue ) 
        Array ( [4] => Dale ) 
        Array ( [5] => Matt ) 
    ?>

【讨论】:

  • 好的,那我不得不使用关联数组或预定义的键来保留数组中的所有值,对吧?
  • 你可以使用任何东西。如果你想保留所有值意味着你的键对于每个值应该是唯一的
  • 也就是说,这就是疑问所在。谢谢@jothi
【解决方案2】:

考虑下面的例子:

$array[0] = 'Alex';  //replaced  rand(0, 5) with 0
$array[3] = 'Blue';  //replaced  rand(0, 5) with 3
$array[2] = 'Dale';  //replaced  rand(0, 5) with 2
$array[4] = 'Matt';  //replaced  rand(0, 5) with 4

var_dump($array);

我们得到如下输出,没有任何变化:

当您使用 rand(0, 5) 时,它会接受随机值 given ,因此每次运行时它都会不断变化,并且您有不同的输出。

var_dump — 转储有关变量的信息

更多信息var_dump

【讨论】:

  • 感谢@tharif 的丰富解释! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 2012-01-09
相关资源
最近更新 更多