如何从右到左str_split字符串?

时间:2018-07-15 13:22:04

标签: php

比方说,我有一个数字ng-repeat,我想将其从右到左分成2个字符,从而得到类似10000的数组。 [0] => 1,[1] => 00,[2] => 00是否有可能?

3 个答案:

答案 0 :(得分:3)

您可以使用preg_split来检查直到尾数为偶数的位置。

$result = preg_split('~\B(?=(..)+$)~', '10000');

\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);

或更短,使用三元运算符:

$result = str_split( strlen($str) & 1 ? "0$str" : $str, 2);
$result[0] = (int)$result[0];

答案 1 :(得分:3)

必须有更简便的方法,但是您可以使用类似的方法:

array_map("strrev", array_reverse(str_split(strrev(10000), 2)));

[0] => 1
[1] => 00
[2] => 00

  1. strrev()-反转字符串
  2. str_split()-将字符串转换为数组
  3. array_reverse()-返回具有反向元素的数组 订购
  4. array_map()-将回调应用于给定的元素 数组

答案 2 :(得分:0)

好吧,没关系,我可以做类似strrev($string)的事情,然后将其除以2