preg_match_allはPREG_SET_ORDERで
フラグを省略する(デフォルトはPREG_PATTERN_ORDER)と$rは以下のようになるので使いずらい。
preg_match_all('/(.)(.)/','abcd',$r) $r→[ ["ab","cd"], ["a","c"], ["b","d"] ]
$rを以下のようにするにはPREG_SET_ORDERを指定する
preg_match_all('/(.)(.)/','abcd',$r,PREG_SET_ORDER) $r→[ ["ab","a","b"], ["cd","c","d"] ]