用于大型数组的php in_array的替代品,用于避免重复条目
发布时间:2020-12-13 22:20:24 所属栏目:PHP教程 来源:网络整理
导读:我需要从600k到2000k生成一个大的随机数列表,但是 列表不能有重复. 我目前的’实施’看起来像这样: ?php header('Content-type: text/plain'); $startTime = microtime(true); $used = array(); for ($i=0; $i 600000; ) { $random = mt_rand(); //if (!in_
我需要从600k到2000k生成一个大的随机数列表,但是
列表不能有重复. 我目前的’实施’看起来像这样: <?php header('Content-type: text/plain'); $startTime = microtime(true); $used = array(); for ($i=0; $i < 600000; ) { $random = mt_rand(); //if (!in_array($random,$used)) { $used[] = $random; $i++; //} } $endTime = microtime(true); $runningTime = $endTime - $startTime; echo 'Running Time: ' . $runningTime; //print_r($used); ?> 如果我保持in_array测试注释,处理时间约为1秒,那么 所以我在重复检测方面或生成部分寻找替代方案(如何生成随机数而不存在重复的风险) 我对任何建议持开放态度. 解决方法
对于快速/脏的解决方案,使用/检查数组键是否可以提高速度?
$used = array(); for ($i = 0; $i < 600000; ) { $random = mt_rand(); if (!isset($used[$random])) { $used[$random] = $random; $i++; } } $used = array_values($used); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |