Необходимо перетасовать колоду карт и раздать их.
Создайте массив из 52 целых чисел, перемешайте его и свяжите с картами:
$suits = array('Clubs' , 'Diamonds' , 'Hearts' , 'Spades');
$cards = array('Ace' , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 'Jack' , 'Queen' , 'King');
$deck = pc_array_shuffle(range(0, 51));
while (($draw = array_pop($deck)) != NULL) {
print $cards[$draw / 4] . ' of ' . $suits[$draw % 4] . "\n";
}
Этот код использует функцию pc_array_shuffle() из описания Рандомизация массива
Для английского представления карт создается пара массивов, $suits и
$cards. Числа от 0 до 51 случайным образом расставляются и назначаются массиву $deck. Чтобы сдать карту, достаточно извлечь число из начала массива, рассматривая этот массив как буквальную колоду карт.
Необходимо добавить проверку на значение NULL внутри оператора
while, иначе цикл прервется, когда вы вытащите нулевую карту. Если
изменить колоду так, чтобы она содержала числа от 1 до 52, то, с математической точки зрения, сопоставление чисел и карт становится более сложным.
Чтобы сдать несколько карт сразу, вызовите функцию array_slice():
array_slice($deck , $cards * - 1);
См. также
Документацию по функции array_slice() на http://www.php.net/array-slice.