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,我不知道这个要求,请检查我编辑的答案以了解您的期望。