пробовал вот так:
for($i=0;$i<5;$i++) {
$uvyv[$i] = rand(0,17);
if(in_array($uvyv[$i],$uvyv)) {
do {
$uvyv[$i] = rand(0,17); }
while(in_array($uvyv[$i],$uvyv)); }
}
но ничего не получилось. прошу вашей помощи)
Спустя 5 минут, 55 секунд (20.03.2011 - 10:15) neadekvat написал(а):
Ну-с, наверное, не самое оптимальное, но решение:
$arr = null;
while(count($arr) != 4)
{
$arr[] = rand(0, 17);
$arr = array_unique($arr);
}
Спустя 6 минут, 9 секунд (20.03.2011 - 10:21) webman написал(а):
но тогда вырезается повторившееся число, и в итоге получается 3 из 4.
Спустя 4 минуты, 47 секунд (20.03.2011 - 10:26) neadekvat написал(а):
Вы запускали скрипт? print_r($arr) сделайте - сколько там элементов видите?
А дабы вы быстрее поняли, когда массив заполняется 4-м элементом, цикл все равно начинается еще раз, сверяет условие, не проходит его и цикл заканчивает свою работу. Так что если 4-й элемент удаляется - то цикл пройдет как минимум еще раз.
А дабы вы быстрее поняли, когда массив заполняется 4-м элементом, цикл все равно начинается еще раз, сверяет условие, не проходит его и цикл заканчивает свою работу. Так что если 4-й элемент удаляется - то цикл пройдет как минимум еще раз.
Спустя 8 минут, 23 секунды (20.03.2011 - 10:35) webman написал(а):
запускал
Array ( [0] => 13 [1] => 11 [3] => 5 [4] => 6 )
после [1] сразу идет [3]
Array ( [0] => 15 [1] => 7 [2] => 12 [4] => 2 )
после [2] сразу идет [4]
как это исправить?
Array ( [0] => 13 [1] => 11 [3] => 5 [4] => 6 )
после [1] сразу идет [3]
Array ( [0] => 15 [1] => 7 [2] => 12 [4] => 2 )
после [2] сразу идет [4]
как это исправить?
Спустя 6 минут, 8 секунд (20.03.2011 - 10:41) neadekvat написал(а):
Обож, чем вас это не устраивает?
Спустя 4 минуты, 24 секунды (20.03.2011 - 10:45) kirik написал(а):
Цитата (webman @ 20.03.2011 - 02:35) |
как это исправить? |
Например так:
$array = array();
while(!isset($array[3])) {
$n = rand();
if(!in_array($n, $array)) {
$array[] = $n;
}
}
или пропустить через array_values();
Спустя 1 минута, 14 секунд (20.03.2011 - 10:46) neadekvat написал(а):
kirik, сложно, хрен разберешься.
$out = array_combine(array(0, 1, 2, 3), $arr);
Спустя 1 минута, 54 секунды (20.03.2011 - 10:48) webman написал(а):
в общем есть в массиве $fr есть много id, далее нужно выбрать рандомно 4 из них, дать запрос в бд и вывести таблицы с этими id. получается запрос в бд ...WHERE id='$arr[0]' ...WHERE id='$arr[1]' и т.д.
а на этом примере Array ( [0] => 15 [1] => 7 [2] => 12 [4] => 2 )
$arr[3] нету в итоге выведется только 3 таблицы
а на этом примере Array ( [0] => 15 [1] => 7 [2] => 12 [4] => 2 )
$arr[3] нету в итоге выведется только 3 таблицы
Спустя 1 минута, 1 секунда (20.03.2011 - 10:49) kirik написал(а):
Цитата (neadekvat @ 20.03.2011 - 02:46) |
сложно, хрен разберешься. |
А условия задачи читал?
Спустя 51 секунда (20.03.2011 - 10:50) neadekvat написал(а):
Цитата (kirik @ 20.03.2011 - 10:49) |
А условия задачи читал? |
О чем речь?
Спустя 1 минута, 52 секунды (20.03.2011 - 10:52) webman написал(а):
Цитата (neadekvat @ 20.03.2011 - 07:46) |
kirik, сложно, хрен разберешься.$out = array_combine(array(0, 1, 2, 3), $arr); |
помогло. большое спасибо)
Спустя 2 минуты, 7 секунд (20.03.2011 - 10:54) kirik написал(а):
Цитата (webman @ 20.03.2011 - 02:48) |
в общем есть в массиве $fr есть много id, далее нужно выбрать рандомно 4 из них, дать запрос в бд и вывести таблицы с этими id |
$fr = range(1, 100);
$rnd_keys = array_rand($fr, 4);
$array = array();
foreach($rnd_keys as $key) {
$array[] = $fr[$key];
}
print_r($array);
Спустя 1 минута, 10 секунд (20.03.2011 - 10:55) kirik написал(а):
Цитата (neadekvat @ 20.03.2011 - 02:50) |
О чем речь? |
Сорри.. ты о ключах? Можно ещё проще, я выше написал..
$arr = array_values($arr);
Спустя 1 минута, 43 секунды (20.03.2011 - 10:57) neadekvat написал(а):
Цитата (kirik @ 20.03.2011 - 10:55) |
Сорри.. ты о ключах? Можно ещё проще, я выше написал.. |
О них.
Согласен, забыл про эту функцию (когда писал твоего поста еще не видел).