如何从右到左str_split字符串?

Jir*_*tan 5 php

假设我有一个数字10000,我想将它从右到左分成 2 个字符,从而得到类似这样的数组[0] => 1,[1] => 00,[2] => 00。它以某种方式可能str_split($var, 2);吗?

Ped*_*ito 5

必须有更简单的方法,但您可以使用以下方法:

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)
  1. strrev() - 反转字符串
  2. str_split() - 将字符串转换为数组
  3. array_reverse() - 返回一个元素顺序相反的数组
  4. array_map() - 将回调应用于给定数组的元素


Cas*_*yte 3

您可以使用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)