Questo fa per te
codice:
srand ((float) microtime() * 10000000);
## Squadre
$input = array ("a", "b", "c", "d");
## Chiavi dell'array con le due squadre
## In chiavi[0] avrai la prima squadra e in $chiavi[1] la seconda
## Fai l'iterazione per tutte le squadre e mano a mano elimini le due estratte
while(count($input)!=0){
$chiavi = array_rand ($input, 2);
## Salvi le squadre antagoniste nei due array
$colonnaA[] = $input[$chiavi[0]];
$colonnaB[] = $input[$chiavi[1]];
## Salvo il valore temporaneamente
$tmpElm = $input[$chiavi[1]];
$index = $chiavi[0];
$input = array_splice($input, $index, 1);
## Trovi la nuova chiave per il secondo elemento inserito
## tanto le squadre non hanno i nomi uguali
$index = array_search($tmpElm, $input);
$input = array_splice($input, $index, 1);
}
## in $colonnA hai tuttle squadre che comeptono con $colonnaB
Non l'ho provato.. magari puoi anche ottimizzarlo