从数组中随机选择键以返回映射到该数组键的数据

时间:2014-10-21 23:26:13

标签: php arrays function random key

新手在这里尝试制作一个简单的功能,我认为我接近解决方案,但我目前卡在了非法的偏移类型。

该函数将根据键的数量随机选择其中一个键,然后传播我的echo语句,以便所需的数据传播函数echo语句。即如果密钥' 3'如果选中,则用户名,名字和姓氏将填充与第三个键相关联的数据' [3]'阵列' $ aaUser'。

我已经尝试搜索堆栈溢出,php.net并用Google搜索试图找到解决方案以尝试解决此问题,但到目前为止我还没有找到一个我能理解的答案。

我的示例数组:

$aaUser = [ //Make multidimensional
    // 0 => nameUser
    // 1 => namefirst
    // 2 => namelast
    0 => ["monkeework", "my", "name"],          
    1 => ["mentor", "Portia", "Plante"],                
    2 => ["teacher", "Bill", "Newman"],             
    3 => ["friend", "Sage", "Gerky"],                   
    4 => [ "pet", "pedro",  "" //last postion left empty - if empty we skip]            
    ];

我的职能:

function getRandomUser($arr){
    $myKey = array_rand($arr);
    $myValue = $arr[$myKey];

    echo 'Username: ' . $arr[$myValue][0] . '<br />'; 

    echo 'Name: ' . $arr[$myValue][1] . ' ' . $arr[$myValue][2] . '<br /><br />'; 

我如何调用该函数:

    getRandomUser($aaUser);//select array, get array data back as echo statements

1 个答案:

答案 0 :(得分:0)

您已将$myValue = $arr[$myKey];设置为如下所示,您只需要引用$myValue[1]而不是$arr[$myValue][1]所需的值。

function getRandomUser($arr){
    $myKey = array_rand($arr);
    $myValue = $arr[$myKey];

    echo 'Username: ' . $myValue[0] . '<br />'; 

    echo 'Name: ' . $myValue[1] . ' ' . $myValue[2] . '<br /><br />'; 

$aaUser传递给函数,现在在函数内设置为$arr。第一行返回$arr的随机密钥。下一行设置$myValue等于$arr[$myKey]的值。例如。

$myKey = 3; // randomly selected key
$myValue = $arr[3] = $aaUser[3] = array("friend", "Sage", "Gerky");
$myValue = array("friend", "Sage", "Gerky"); // what $myValue holds now

$arr$aaUser是相同的。因此$arr[3]中的所有内容都将设置为$myValue。要访问该数组,我们只需调用$myValue[1]

如果您尝试拨打$arr[$myValue][1],就像说$arr[array("friend", "Sage", "Gerky")][1]一样。