假设我有一个数字10000,我想将它从右到左分成 2 个字符,从而得到类似这样的数组[0] => 1,[1] => 00,[2] => 00。它以某种方式可能str_split($var, 2);吗?
必须有更简单的方法,但您可以使用以下方法:
array_map("strrev", array_reverse(str_split(strrev(10000), 2)));
Run Code Online (Sandbox Code Playgroud)
[0] => 1
[1] => 00
[2] => 00
Run Code Online (Sandbox Code Playgroud)
您可以使用preg_split检查直到末尾的位数为偶数的位置。
$result = preg_split('~\B(?=(..)+$)~', '10000');
Run Code Online (Sandbox Code Playgroud)
\B非单词边界,防止匹配字符串的开头。(非单词边界仅在两个数字之间匹配)
(?=(..)+$)是先行检查,检查该位置后面是否有偶数个字符。
否则,当字符串长度为奇数时,您可以添加前导 0 并在第一项中将其删除:
$str = '10000';
if ( strlen($str) & 1 ) {
$res = str_split("0$str", 2);
$res[0] = (int)$res[0];
} else {
$res = str_split($str, 2);
}
print_r($res);
Run Code Online (Sandbox Code Playgroud)
或者使用三元运算符更短:
$result = str_split( strlen($str) & 1 ? "0$str" : $str, 2);
$result[0] = (int)$result[0];
Run Code Online (Sandbox Code Playgroud)