# [PHP] Shuffle Cards Function

```I've written a ShuffleCards function that will actually shuffle a deck of
cards just like would happen in real life (divide the deck in half and stick
them into each other with 1-3 cards between each other card)

function ShuffleCards(&\$cardsArray, \$times)
{
// Randomizes where to split within center (-3 to +3 from dead center)
(MINIMUM 10 CARDS IN DECK)
// Splits into two array. Randomizes how many cards from left and how
many cards from right (between 1 and 3)
// Alternates sides. Continues until both arrays are empty.
\$arraySize = count(\$cardsArray);

if(\$arraySize<10)
return;

for(\$i=0;\$i<\$times;\$i++)
{
reset(\$cardsArray);

\$cutVariant = rand(-3, 3);

\$firstArray = array();
\$secondArray = array();

for(\$z=0;\$z<\$arraySize;\$z++)
{
if(\$z<\$cutLocation)
array_push(\$firstArray, \$cardsArray[\$z]);
else
array_push(\$secondArray, \$cardsArray[\$z]);
}

\$bottomFirst = rand(0, 1);
\$cardsArray = array();

while(count(\$firstArray) && count(\$secondArray))
{
\$leftNewCards = array();
\$rightNewCards = array();

\$leftVariant = rand(1, 3);
if(\$leftVariant>count(\$firstArray))
\$leftVariant = count(\$firstArray);

\$rightVariant = rand(1, 3);
if(\$rightVariant>count(\$secondArray))
\$rightVariant = count(\$secondArray);

for(\$x=0;\$x<\$leftVariant;\$x++)
{
array_push(\$leftNewCards, array_shift(\$firstArray));
}

for(\$y=0;\$y<\$rightVariant;\$y++)
{
array_push(\$rightNewCards, array_shift(\$secondArray));
}

if(\$bottomFirst==0)
{
\$newCardsArray = array_merge(\$leftNewCards, \$rightNewCards);
\$bottomFirst = 1;
}
else
{
\$newCardsArray = array_merge(\$rightNewCards, \$leftNewCards);
\$bottomFirst = 0;
}

reset(\$newCardsArray);

while(count(\$newCardsArray))
{
array_push(\$cardsArray, array_shift(\$newCardsArray));
}
}

if(count(\$firstArray))
{
while(count(\$firstArray))
array_push(\$cardsArray, array_shift(\$firstArray));
}
if(count(\$secondArray))
{
while(count(\$secondArray))
array_push(\$cardsArray, array_shift(\$secondArray));
}
}
}

Robert Schultz - [EMAIL PROTECTED]

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

```