我需要在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
- 等等
我该怎么做呢?
所以基本上这一切都取决于"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);