如何使用相同的随机生成的索引从两个数组中检索值?

时间:2017-11-22 04:14:20

标签: php arrays random indexing

我想使用随机生成的索引访问并显示每个数组(具有相同索引)的一个值。

我的代码:

$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 NightowlLevel 20 Shadow Walker

编辑:我已经知道如果你使用多维数组,你可以只分配彼此,但我想用2个独立的数组来做。

2 个答案:

答案 0 :(得分:2)

你期待这样的事吗?这里我们使用array_map并从函数返回级别和排名数组。

Try this code snippet here

<?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