ローマ字の文字列の母音と子音をそれぞれ並び替えた全パターンを求める

例えば「ぱずらあ」(pazuraa)であれば、
puzaaraとか、ruzaapaとか、そういう全パターンを求めます。

// ここに母音と子音で分けて記述する
$boin = ['p','z','r',''];
$siin = ['a','u','a','a'];

$result = [];
calc($boin, $siin, '');

foreach($result as $str=>$dummy) echo $str."\n";
echo count($result)."パターンありました。\n";

function calc($a, $b, $str){
  // 残りを回す
  foreach($a as $key => $ch) {
    $nextStr = $str.$ch;
    // 次がなければ
    if (count($b)==0) {
      // 結果を記録(重複するものは上書き)
      global $result;
      $result[$nextStr] = 0;
      continue;
    }
    // 選んだ値を消した配列を作る
    $next_a = $a;
    unset($next_a[$key]);
    // aとbを入れ替えて再起
    calc($b, $next_a, $nextStr);
  }
}

出力結果はこんな感じ。

pazuraa
pazuara
pazarua
pazarau
…中略…
uzarapa
urapaza
urazapa
96パターンありました。