ОБСУЖДЕНИЕ

Занесение в массив и сравнение значений с ним.

4 ответов 6,1 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Всем доброго времени суток...
Мне нужно сделать выборку нескольких случайных элементов, так, чтобы они не повторялись.
Не могу разобраться с массивом.
Код:
<html>
<body>
<?php
$i = 0;
$imax = 14;
$max = 30;
$array = array();
#$rnd = rand (1,$max);
#$array[$i]= $rnd;
while ($i <= $imax) {
$rnd = rand (1,$max);
if $rnd != $array[$i] {
$array[$i]= $rnd;
echo "<br>".$rnd;
$i=$i+1;
}
}
#echo $array[$i];
?>
</body>
</html>
 
Ещё новичок в пхп, не знаю как правильнее сделать.

Я хочу вывести 15 рандомных чисел так, чтобы они не пвторялись.
Для этого решил создать массив и вводить туда каждое выбранное число.
В дальнейшем проверяю выбранное число с элементами массива. При совпадении выбираю число заного, а при совпадении зановсим его в массив и выбираем следующее.

На выходе получается белый экран.
То ли где-то знак упустил, то ли с массивами перемудрил.
 
Я задумал сделать проверку вот так, но видно ступил. Ведь проверит только одно значение:
if $rnd != $array[$i] { $array[$i]= $rnd; echo "<br>".$rnd; $i=$i+1; }

Подскажите как луче оранизовать проверку. Через циклы for или while?
 
Тут не нужны форы. Тут нужно использовать ассоциативные массивы.
Код:
while (count($temp) !== 15) {
$temp[ rand() ] = 1;
}
$my_numbers = array_keys($temp);
Красиво и легко.
 
Да только как же быть если rand() повториться? Никакой ошибки не будет? просто тихо продолжит работать?
Ну повториться и повториться... Нового элемента в массив не добавиться. Будет крутиться в цикле пока не наберет 15 уникальных ключей.
Какие нужны ошибки? Зачем?
 

Ещё по теме