我想使用随机生成的索引访问并显示每个数组(具有相同索引)的一个值。
我的代码:
$userRank = array(
"Nightowl",
"Demon Hunter",
"Shadow Walker",
"Legend"
);
$userLevel = array(
"Level 5",
"Level 10",
"Level 15",
"Level 20",
);
$deck = array();
foreach($userRank as $rank){
foreach($userLevel as $level){
$deck[] = array("level" => $level, "rank" => $rank);
}
}
shuffle($deck);
$getVal = array_shift($deck);
echo $getVal['level'] . ' ' . $getVal['rank'];
最终结果是数组从提供的数组中检索随机值。
e.g。 Level 10 Nightowl
或Level 20 Shadow Walker
编辑:我已经知道如果你使用多维数组,你可以只分配彼此,但我想用2个独立的数组来做。
答案 0 :(得分:2)
你期待这样的事吗?这里我们使用array_map
并从函数返回级别和排名数组。
<?php
ini_set('display_errors', 1);
$userRank = array(
"Nightowl",
"Demon Hunter",
"Shadow Walker",
"Legend"
);
$userLevel = array(
"Level 5",
"Level 10",
"Level 15",
"Level 20",
);
$deck=array_map(function($uL,$uR){
return array("level" => $uL, "rank" => $uR);//returning array with level and rank
},$userLevel,$userRank);
shuffle($deck);
$getVal = array_shift($deck);
echo $getVal['level'] . ' ' . $getVal['rank'];
答案 1 :(得分:1)
我已经知道如果你使用多维数组,你可以只为彼此分配,但我想用2个独立的数组来做。
在我看来,另一个答案并不能满足你的条件。只需两行即可完成此任务。
当你只想使用一个随机密钥/索引从每个数组访问单个元素时,组合数组,对数组进行混洗,然后修改数组(关闭第一个元素)只是浪费/间接编程实践 - 这样,你可以重新使用原始(未损坏的)数组“down-script”。
这是最直接的使用方法:
代码:(Demo)
$rand_index=rand(0,sizeof($userRank)-1); // generate a random key/index
echo "{$userLevel[$rand_index]} {$userRank[$rand_index]}"; // display the desired values
可能的输出:
Level 10 Demon Hunter