我在这里找到了许多针对我问题的回答,但我找不到确切的答案.
我必须从数组中删除每个第4位,但是开始和结束要形成一个圆圈,所以如果我在下一个循环中删除第4位,那将是另一个数字(可能是第4个或第3个),这取决于字符串中有多少个数字
$string = "456345673474562653265326";
$chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY);
$result = array();
for ($i = 0; $i < $size; $i += 4)
{
$result[] = $chars[$i];
}
解决方法:
<?php
$string = "abcdef";
$chars = str_split($string);
$i = 0;
while (count($chars) > 1) {
$i += 3;
$n = count($chars);
if ($i >= $n)
$i %= $n;
unset($chars[$i]);
$chars = array_values($chars);
echo "DEBUG LOG: n: $n, i: $i; s: " . implode($chars, '') . "\n";
}
?>
输出:
DEBUG LOG: n: 6, i: 3; s: abcef
DEBUG LOG: n: 5, i: 1; s: acef
DEBUG LOG: n: 4, i: 0; s: cef
DEBUG LOG: n: 3, i: 0; s: ef
DEBUG LOG: n: 2, i: 1; s: e