У меня 60 изображений, но я хочу случайным образом показать 20 от 1 до 60.
Мой код примерно такой, он показывает 60
<?php for( $i = 1; $i < 61; $i++ ) { print '<a href="javascript:;"><img src="images/items/' . $i . '.png" class="allitems item' . $i . '" /></a>'; } ?> 
Я нашел функцию PHP RAND (), но не смог ее реализовать, любая помощь была бы оценена.
  Попробуйте функции range() и array_rand() : 
<?php // range generates array with direct sequence from 1 to 60 (inclusive). // array_rand extracts 20 random keys from it. $range = array_rand(range(1, 60), 20); while(count($range)){ $i = array_shift($range) + 1; print '<a href="javascript:;"><img src="images/items/' . $i . '.png" class="allitems item' . $i . '" /></a>'; } ?>в<?php // range generates array with direct sequence from 1 to 60 (inclusive). // array_rand extracts 20 random keys from it. $range = array_rand(range(1, 60), 20); while(count($range)){ $i = array_shift($range) + 1; print '<a href="javascript:;"><img src="images/items/' . $i . '.png" class="allitems item' . $i . '" /></a>'; } ?>
  UPDv1: for -loop: 
 <?php $range = array_rand(range(1, 60), 20); for($i = 0; $i < 20; $i++){ $image = $range[$i] + 1; print '<a href="javascript:;"><img src="images/items/' . $image . '.png" class="allitems item' . $image . '" /></a>'; } unset($range, $i, $image); ?> 
UPDv2:
  Я неправильно прочитал array_rand() .  Он возвращает ключи массива вместо элементов .  Вот многоцелевая версия (исправить с помощью array_flip() ): 
 <?php header('Content-Type: text/plain'); $buffer = range(1, 60); $buffer = array_flip($buffer); $buffer = array_rand($buffer, 20); foreach($buffer as $value){ echo $value, PHP_EOL; } ?> 
И функция быстрого доступа (безопасно для негативов и общий счетчик):
 <?php header('Content-Type: text/plain'); function random_range($min, $max, $count){ $count = abs((int)$count); if($min > $max){ list($min, $max) = array($max, $min); } $uniques = abs($max - $min); if($count > $uniques)$count = $uniques; return array_rand(array_flip(range($min, $max)), $count); } foreach(random_range(1, 60, 20) as $value){ echo $value, PHP_EOL; } ?> 
Есть и другой способ для тех, кому нужна невозрастающая случайная последовательность. Использовать это:
 <?php header('Content-Type: text/plain'); function random_range($min, $max, $count){ $count = abs((int)$count); if($min > $max){ list($min, $max) = array($max, $min); } $uniques = abs($max - $min); if($count > $uniques)$count = $uniques; $result = array(); $ready = 0; while($ready < $count){ $buffer = rand($min, $max); if(!in_array($buffer, $result)){ $result[] = $buffer; $ready++; } } return $result; } foreach(random_range(1, 60, 20) as $value){ echo $value, PHP_EOL; } ?> 
UPDv3:
  Другой способ: array_slice() range() + shuffle() + array_slice() : 
 <?php header('Content-Type: text/plain'); function random_range($min, $max, $count){ $count = abs((int)$count); if($min > $max){ list($min, $max) = array($max, $min); } $uniques = abs($max - $min); if($count > $uniques)$count = $uniques; $result = range($min, $max); shuffle($result); return array_slice($result, 0, $count); } foreach(random_range(5, 20, 5) as $random){ echo $random, ' '; } ?> 
Это будет работать
  <?php for( $i = 1; $i < 21; $i++ ) { $j = rand(1,60); print '<a href="javascript:;"><img src="images/items/' . $j . '.png" class="allitems item' . $i . '" /></a>'; } ?>