PHP关联数组随机选取单个带键元素问题求助
解决PHP关联数组随机选取单个元素的问题
嘿,我来帮你排查下代码的问题~你现在的代码没法正常达到“随机选单个元素”的预期,核心问题出在多余的foreach循环上,咱们一步步来改:
问题分析
你把array_rand()放在了foreach循环里,这会导致循环遍历数组的每一个元素时,都执行一次随机选键的操作——也就是说数组有7个元素,就会输出7个随机键(可能重复),这完全不是你想要的“选单个”的效果。
修复后的代码
直接去掉foreach循环,只调用一次array_rand()就够了:
if (isset($_POST['losuj'])) { $arr = [ 'chleb' => 'skiny/1.jpg', 'mienso' => 'skiny/2.jpg', 'mienso2' => 'skiny/2.jpg', 'mienso3' => 'skiny/2.jpg', 'mienso4' => 'skiny/2.jpg', 'mienso5' => 'skiny/2.jpg', 'Hasasdasd' => 'skiny/2.jpg', ]; // 从数组中随机获取1个键 $randomKey = array_rand($arr, 1); // 输出随机键 echo $randomKey; // 如果你需要输出对应的图片路径,替换成下面这句: // echo $arr[$randomKey]; }
补充说明
array_rand($arr, 1)的作用是从数组中随机返回1个键(当第二个参数为1时,返回单个字符串;如果参数大于1,才会返回包含多个键的数组),完全不需要遍历数组。- 如果你的PHP版本在7.1及以上,也可以用更安全的随机数方法实现,适合对随机性要求更高的场景:
$keys = array_keys($arr); $randomKey = $keys[random_int(0, count($keys) - 1)];
内容的提问来源于stack exchange,提问作者Season6
相关产品推荐
相关产品推荐

