如何洗牌 php 数组但将索引保留在 foreach 中

how to shuffle a php array but keep the index in foreach

我有一个数组,它的数据使用 foreach 循环显示在网格中。 foreach 的索引用作网格中每个条目的 url 的一部分。

$i=0;   
foreach ($array as $grid) {
 $name = $grid->name;
 $address = $grid->address;
 echo '<li> <a href="javascript:myclick('.$i.');" title="">' . $name . '</a> </li>';
 $i++;
}

我想以随机顺序显示数组,所以我使用了 shuffle(); 但是索引被破坏并且链接断开。 我已经四处寻找了 2 天,并尝试了许多不同类型的功能,这些功能应该保持索引不变但没有运气。 任何帮助将不胜感激。

改为随机播放索引:

$index = range(0, sizeof($array));
shuffle($index);
foreach ($index as $i) {
    // $array[$i], $i 
}

你明白了。

更安全地随机排列数组的真实键

$keys = array_keys($arr);
shuffle($keys);
foreach($keys as $i) {