-2

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

s5z-s4z-s3z-s2z-s1z

其中“s”则数字始终位于同一位置。唯一的区别是最后是否有 az 。

所以例如我会有

  • 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
  • 等等

我该怎么做呢?

4

1 回答 1

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);
于 2012-09-06T20:51:24.463 回答