获取数组的第一个值并存储在新的数组php中

时间:2015-10-05 07:23:11

标签: php arrays random

我正在尝试制作纸牌游戏。 我有6个存储在数组中的变量。比我使用fisherYates方法随机化数组,并显示其中的四个。 问题是,当我以这种方式随机化它时,它将只给出这六种随机输出,具有所有不同类型。 所以我想要一些重复,如果你画四张牌,你得到的输出 例如:俱乐部,俱乐部,钻石,心脏或心脏,明星,明星,心脏......如果你得到一点...... 我想这样做:将数组放入4次循环中,每次循环时,它都会在新数组中存储第一个或最后一个值,这样我就可以更有机会将相同的卡组合在一起输出数组。 但是我被困了,我不知道怎么做:/

这是我迄今为止尝试过的事情

$diamond = 'cube.jpg';
$heart = 'heart.jpg';
$spade = 'spade.jpg';
$club = 'tref.jpg';
$star='star.jpg';
$qmark='qmark.jpg';

$time=microtime(35);

$arr=[$diamond,$heart,$spade,$club,$star,$qmark];

function fisherYatesShuffle(&$items, $time)
{   



    for ($i = count($items) - 1; $i > 0; $i--)
    {
        $j = @mt_rand(0, $i);
        $tmp = $items[$i];
        $items[$i] = $items[$j];
        $items[$j] = $tmp;
    }
    return $items;
}

    $i=0;
    do {

        $niz[$i]=fisherYatesShuffle($arr,$time);
        reset($niz);


        $i++;
    } while ($i <= 3);

1 个答案:

答案 0 :(得分:0)

有一个解决方案。只是简单地做多维数组的第一个元素的foreach :) 代码是这样的:

    $diamond = 'cube.jpg';
    $heart = 'heart.jpg';
    $spade = 'spade.jpg';
    $club = 'tref.jpg';
    $star='star.jpg';
    $qmark='qmark.jpg';

    $time=microtime(35);

    $arr=[$diamond,$heart,$spade,$club,$star,$qmark];



    $niz=array();

    $i=0;
    do {

        $niz[$i]=fisherYatesShuffle($arr,$time);
        //reset($niz);


        $i++;
    } while ($i <= 3);


    foreach ($niz as $key ) {
        $randomArr[]=$key[0];  ;
    }



function fisherYatesShuffle(&$items, $time)
{   



    for ($i = count($items) - 1; $i > 0; $i--)
    {
        $j = @mt_rand(0, $i);
        $tmp = $items[$i];
        $items[$i] = $items[$j];
        $items[$j] = $tmp;
    }
    return $items;
}
print_r($randomArr);