我有一个由5个数字组成的字符串,我需要将它们分开并将它们存储在数组中。我一直在想办法完成一个小时的操作,但未成功,所以我想知道是否有人对完成此操作有任何想法,或者是否有内置方法来执行此操作?
$string = "1 2 3 4 5"
所需结果
$array[0] = "1 2 3 4 5" (5)
$array[1] = "1 2 3 4" (4)
$array[2] = "2 3 4 5" (4)
$array[3] = "1 2 3" (3)
$array[4] = "2 3 4" (3)
$array[5] = "3 4 5" (3)
$array[6] = "1 2" (2)
$array[7] = "2 3" (2)
$array[8] = "3 4" (2)
$array[9] = "4 5" (2)
$array[10] = "1" (1)
$array[11] = "2" (1)
$array[12] = "3" (1)
$array[13] = "4" (1)
$array[14] = "5" (1)
PS:示例字符串中的数字是5,但这仅是示例。工作函数应使用任意数量的数字。谢谢你。
编辑:我不需要一个函数来爆炸这个。我已经知道爆炸功能。我要的是一个函数,无论数量多少,都可以在“必需的结果”以下获取结果。因此,如果数字为“ 1 2 3 4 5 6 7 8 9 10”,则结果将类似于以下要求结果的模式。
重点应放在要求的结果以下的模式上。这些模式是我想要获得的模式。我需要一个功能获取那些确切的模式。
更多例子
$string = "1 2 3 4"
$array[0] = "1 2 3 4"
$array[1] = "1 2 3"
$array[2] = "2 3 4"
$array[3] = "1 2"
$array[4] = "2 3"
$array[5] = "3 4"
$array[6] = "1"
$array[7] = "2"
$array[8] = "3"
$array[9] = "4"
这是执行此操作的函数:
function do_the_thing($string) {
$numbers = explode(' ', $string);
$result = array();
for ($n = count($numbers); $n >= 1; --$n) {
for ($i = 0; $i <= count($numbers) - $n; ++$i) {
$result[] = implode(' ', array_slice($numbers, $i, $n));
}
}
return $result;
}
基本上:
$n
是给定通行证中所需的数字计数。从数字倒数到1。$i
是起始索引,新的结果项应从该索引开始从输入字符串开始复制。从0开始,并针对每个结果项目递增,直到项目的最后一个数字与输入的最后一个数字相同。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句