【问题标题】:see if 3 or more numbers match an array查看是否有 3 个或更多数字与数组匹配
【发布时间】:2011-04-21 10:14:48
【问题描述】:

我有一个包含 6 个随机数的数组,这是一个示例

[4,8,12,22,23,43]

我还有 100 个包含 6 个数字的数组,这些都是随机的,一些示例可能是

[5,8,15,47,32,48]
[3,4,8,12,33,42]
[8,12,26,55,43,33]
[4,63,45,23,45,55] ...

我想看看这些数字有多少次(在 100 个数组中)匹配顶部数组中的至少 3 个。你可以猜到这是一个彩票实验。

如您所见,数组 3 匹配顶部数组中的 3 个数字。

任何想法如何做到这一点?或许可以选择查看 4 个数字是否匹配。

【问题讨论】:

    标签: php arrays random


    【解决方案1】:
        $master_array = array(4, 8, 12, 22, 23, 43);
    
        $arrays = array(array(5, 8, 15, 47, 32, 48),
                    array(3, 4, 8, 12, 33, 42),
                array(8, 12, 26, 55, 43, 33),
                array(4, 63, 45, 23, 45, 55));
    
        foreach ($arrays as $arr)
        {
            $intersect = array_intersect($master_array, $arr);
            if (count($intersect)==3) print 'Match: '.print_r($arr, true).PHP_EOL;
        }
    

    【讨论】:

    • 球的顺序有关系吗?
    • 有什么方法可以显示匹配的数字,而不是匹配的数组?还为 array_intersect +1!
    • @dotty,好吧,您可以将 foreach 替换为 foreach ($arrays as $arr_number=>$arr) 并在内部替换为“print $arr_number”
    • 好电话。这是一个完美的答案,还告诉我花 100 英镑买彩票永远不会赢回超过 40 英镑!
    【解决方案2】:

    也许是这样的:

    $winner = [4,8,12,22,23,43];
    
    $arrays = //all your 100 arrays
    
    $i = 0; // number of matches
    
    foreach ($arrays as $array)
    {
        $result = array_intersect($array, $winner);
        if (count($result) >= 3) $i++;
    }
    

    【讨论】:

    • Dutchie432,谢谢!对于上面的问题:使用 'foreach ($arrays as $number => $array)' 然后 'echo $number'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多