如何优化基于for循环的数组合并?游戏随机数生成方案优化咨询
优化建议
你的实现能完成需求,但存在可优化的地方:
避免频繁使用
array_merge()
每次调用array_merge()都会创建新数组并复制原有元素,虽然10次循环的性能影响很小,但这种写法完全没必要。PHP里直接用$target[] = $value就能向数组末尾追加元素,效率更高,代码也更简洁。处理随机数范围的边界问题
当循环的$i=0时,rand(1, $i)的参数是1和0,PHP会自动交换这两个值变成rand(0,1),如果这不是你想要的结果,需要额外判断,避免生成不符合预期的随机数。
优化后的代码示例:
$target = [1, rand(1, 5)]; for ($i = 0; $i < 10; $i++) { // 确保随机数范围有效,自动处理i>5的情况 $num1 = rand(min($i, 5), max($i, 5)); // 若i=0时需要固定范围,可替换为rand(1,5)这类符合需求的默认值 $num2 = $i > 0 ? rand(1, $i) : rand(0, 1); $target[] = $num1; $target[] = $num2; } echo '<pre>'; print_r($target);
如果你的需求是生成固定数量的随机数,也可以预先计算数组长度,用array_fill()初始化后再逐个赋值,但对于这种小循环,直接追加的方式已经足够高效且易读。
内容的提问来源于stack exchange,提问作者Jaymin
相关产品推荐
相关产品推荐

