3 回答

TA貢獻1852條經驗 獲得超7個贊
希望這對您有所幫助。
$str = 'lognstring';
$arr = str_split($str, 3);
$array1= $arr;
array_push($array1,substr($str, -3));
print_r($array1);

TA貢獻1776條經驗 獲得超12個贊
$str = 'lognstring';
$chunk = 3;
$arr = str_split($str, $chunk); //["log","nst","rin","g"]
if(strlen(end($arr)) < $chunk) //if last item string length is under $chunk
$arr[count($arr)-1] = substr($str, -$chunk); //replace last item to last $chunk size of $str
print_r($arr);
/**
array(4) {
[0]=>
string(3) "log"
[1]=>
string(3) "nst"
[2]=>
string(3) "rin"
[3]=>
string(3) "ing"
}
*/

TA貢獻1796條經驗 獲得超7個贊
與之前發布的答案不同,這些答案會爆炸字符串str_split()
然后返回并在需要時清除最后一個元素,我將演示一種技術,該技術將在一次干凈的傳遞中填充子字符串數組。
要有條件地減少最后一次迭代的起點,請使用三元條件或min()
. 我更喜歡min()
.
代碼:(演示)
$string = 'lognstring';
$segmentLength = 3;
$totalLength = strlen($string);
for ($i = 0; $i < $totalLength; $i += $segmentLength) {
$result[] = substr($string, min($totalLength - $segmentLength, $i), $segmentLength);
}
var_export($result);
輸出:
array (
0 => 'log',
1 => 'nst',
2 => 'rin',
3 => 'ing',
)
或者,您可以在拆分之前(而不是之后)準備字符串。
代碼:(演示)
$extra = strlen($string) % $segmentLength;
var_export(
str_split(
$extra
? substr($string, 0, -$extra) . substr($string, -$segmentLength)
: $string,
$segmentLength
)
);
- 3 回答
- 0 關注
- 117 瀏覽
添加回答
舉報