işte sana kendi hazırladığım sayısal olmayan bir kombinasyon üretme fonksiyonu;
	function kombinasyon($dizin, $basamak = false)
	{
		$basamak = !$basamak ? count($dizin) : $basamak;
		$sonuc = array();
		foreach($dizin as $karakter):
			$kombinasyon = $_kombinasyon = array($karakter);
			for($i=0; $i<$basamak; $i++):
				$kombinasyon = $_kombinasyon;
				foreach($dizin as $_karakter):
					foreach($kombinasyon as $__karakter):
						$_kombinasyon[] = $_karakter . $__karakter;
					endforeach;
				endforeach;
			endfor;
			$sonuc = array_merge($kombinasyon, $sonuc);
		endforeach;
		$sonuc = array_unique($sonuc);
		sort($sonuc);
		return $sonuc;
	}
Aradığın şey bu sanırım, bahsettiğin örnek ile kullanımı;
$karakterler = array('a', 'b', 'c');
$kombinasyon = kombinasyon($karakterler);
print_r($kombinasyon);
kolay gelsin