Php 使用值填充以前创建的关联数组

Php 使用值填充以前创建的关联数组,php,arrays,Php,Arrays,尝试使用随机创建的值填充以前创建的关联数组。我看不出我做错了什么 <?php $value_min = 1; $value_max = 3; $my_array = array ( "dice_1" => null, "dice_2" => null, "dice_3" => null ); foreach(range($value_min, $value_max) as $key => $value) { $my_array[

尝试使用随机创建的值填充以前创建的关联数组。我看不出我做错了什么

<?php

$value_min = 1;
$value_max = 3;

$my_array = array (
    "dice_1" => null,
    "dice_2" => null,
    "dice_3" => null
);

foreach(range($value_min, $value_max) as $key => $value) {
    $my_array[] = random_int($value_min, $value_max);
};

print_r($my_array);
预期结果

(
    [dice_1] => 2  
    [dice_2] => 2
    [dice_3] => 3
)
注意:值当然可以不同,因为它们是用随机数创建的


在这里你可以这样做

$t = range($value_min, $value_max);
shuffle($t);
$temp = array_combine(array_keys($my_array), $t);
我正在提取
$my_数组
和无序范围数组的键。
然后将它们组合为键作为第一个参数,并将无序范围数组作为第二个参数

编辑

在这种情况下,您可以遍历我的_数组

foreach($my_array as $key => &$value) { // & to save data directly to its address
    $value = random_int($value_min, $value_max);
};

.

在这里,您可以执行类似的操作

$t = range($value_min, $value_max);
shuffle($t);
$temp = array_combine(array_keys($my_array), $t);
我正在提取
$my_数组
和无序范围数组的键。
然后将它们组合为键作为第一个参数,并将无序范围数组作为第二个参数

编辑

在这种情况下,您可以遍历我的_数组

foreach($my_array as $key => &$value) { // & to save data directly to its address
    $value = random_int($value_min, $value_max);
};

.

只需更改每个人的

foreach($my_array as $key => $value) {
    $my_array[$key] = random_int($value_min, $value_max);
};

只需更改foreach的

foreach($my_array as $key => $value) {
    $my_array[$key] = random_int($value_min, $value_max);
};


我喜欢在
foreach
循环中使用
range()
,但你根本没有使用
$key
。我认为你使用这些奇怪的数组索引,让你的生活比需要的更艰难。为什么不给数组变量一个正确的名称来表示它的用途(可能是
$dice\u throws
而不是
$my\u array
),并对其中的元素使用简单的、基于零的索引…?@04FS感谢您的输入。您的评论在名称约定中有效。当谈到数组索引时,有些情况下您“继承”了一个结构,可以更改值,但不能更改键名约定。我喜欢在
foreach
循环中使用
range()
,但您根本没有使用
$key
。我认为您在这里的生活比需要的更艰难了,通过使用这些奇怪的数组索引。为什么不给数组变量一个正确的名称来表示它的用途(可能是
$dice\u throws
而不是
$my\u array
),并对其中的元素使用简单的、基于零的索引…?@04FS感谢您的输入。您的评论在名称约定中有效。对于数组索引,在某些情况下,您可以“继承”结构,并可以更改值,但不能更改键名约定。问题是,范围和洗牌的组合只会创建一个正在洗牌的系列。结果是数字1总是只创建一次,等等。这消除了骰子获得一对的可能性,例如任何掷骰子在不同的骰子上都有相同的数字。Ohk,我不知道这个要求,请检查我编辑的答案,以了解您的期望。我以前尝试过您的建议。问题是,范围和洗牌的组合只会创建一个正在洗牌的系列。结果是数字1总是只创建一次,等等。这消除了骰子获得一对的可能性,例如,在不同的骰子上有相同数字的任何投掷。Ohk,我不知道这个要求,请检查我编辑的答案以了解您的期望。