$cars = array(1,2,3,4,5,6,7,8);
Необходимо составить 4 группы по 2 машины без повторений.
Пробовал так:
$Cars = count($cars);
for($i = 1; $i <= $Cars; ++$i)
{
A:
$index_1 = rand(0, $Cars - 1);
$index_2 = rand(0, $Cars - 1);
if($index_1 != $index_2)
{
if($cars[$index_1] and $cars[$index_2]){
echo '[' . $i . '] ' . $cars[$index_1] . ' <em>-vs-</em> ' . $cars[$index_2] . ' <br />';
unset($cars[$index_1]);
unset($cars[$index_2]);
}else{
goto A;
}
}else{
goto A;
}
}
Бросает в вечный цикл... (> 30 сек)
P.S: Машин может быть и больше... Равноценно как и 9 или 11.
Спустя 6 минут, 42 секунды (18.09.2012 - 14:54) GET написал(а):
В php ввели goto!
)) с 5.3 прочитал, а я думал с 6 только появится.
if($index_1 != $index_2) не проверял но здесь if($index_1 !== $index_2)

if($index_1 != $index_2) не проверял но здесь if($index_1 !== $index_2)
Спустя 2 минуты, 45 секунд (18.09.2012 - 14:57) GET написал(а):
массив уменьшается
unset($cars[$index_1]);
unset($cars[$index_2]);
а его количество $Cars остается прежнем и заново не вычисляется
unset($cars[$index_1]);
unset($cars[$index_2]);
а его количество $Cars остается прежнем и заново не вычисляется
Спустя 29 секунд (18.09.2012 - 14:57) cyberside написал(а):
A.B.C.
Мне важно что бы числовых совпадений по ID не было, с этой строкой все в порядке.
Вопрос стоит в том что может есть какое либо другое решение для выбора и удаления ID из массива.
Мне важно что бы числовых совпадений по ID не было, с этой строкой все в порядке.
Вопрос стоит в том что может есть какое либо другое решение для выбора и удаления ID из массива.
Спустя 2 минуты (18.09.2012 - 14:59) cyberside написал(а):
count считает кол-во элементов в массиве. Может быть удален 6 элемент массива, но все равно 7 остается седьмым.
Спустя 1 час, 29 минут, 49 секунд (18.09.2012 - 16:29) dron4ik написал(а):
$cars[$index_1] and $cars[$index_2] )))
Спустя 7 минут, 47 секунд (18.09.2012 - 16:37) killer8080 написал(а):
Цитата (cyberside @ 18.09.2012 - 14:47) |
Необходимо составить 4 группы по 2 машины без повторений. |
shuffle() array_chunk()
Спустя 1 час, 42 минуты, 20 секунд (18.09.2012 - 18:19) Guest написал(а):
killer8080, спасибо!