php中每个字符串的可能组合

时间:2012-09-06 20:47:56

标签: php string

我需要在PHP中使用每种可能的组合构建字符串,例如

  

s5z-s4z-S3Z-S2Z-s1z

其中's'那么数字总是在同一个位置。 唯一的区别是最后是否有z。

所以例如我会

  • s5z-s4z-S3Z-S2Z-S1
  • s5z-s4z-S3Z-S2Z-s1z
  • s5z-s4z-S3Z-S2-S1
  • s5z-s4z-S3Z-S2Z-S1
  • s5z-s4z-S3Z-S2-s1z
  • s5z-s4z-S3-S2-s1z

我将如何做到这一点?

1 个答案:

答案 0 :(得分:3)

所以基本上它都依赖于“z是否存在”。这可以很容易地转换为二进制数,其中每个0代表不存在的z,每个1表示存在z

因此,您只需遍历所有数字。

$length = 5;
$max = bindec(str_repeat("1",$length));
$out = Array();
for( $i=0; $i<$max; $i++) {
  $entry = Array();
  for( $x=0; $x<$length; $x++) $entry[] = "s".($length-$x).($i & (1<<$x) ? "z" : "");
  $out[] = implode("-",$entry);
}
echo implode(" ",$out);