如何将没有分隔符的字符串(例如
$a = '89111213';
)拆分为整数数组?
想要的结果:
[8, 9, 11, 12, 13]
我在循环中生成该输入数字,并像
$a .= $somevariable;
那样串联。
更新:
正如 @therefromhere 在他的评论中建议的那样,不要将数字连接成一个字符串,而是直接将它们放入一个数组中:
$a = array();
for(...) {
$a[] = $somevariable;
}
这在某种程度上是有效的。
重要:
假设: 数字按升序连接并以数字开头 < 10 :)
$str = "89111213";
$numbers = array();
$last = 0;
$n = '';
for($i = 0, $l = strlen($str);$i<$l;$i++) {
$n .= $str[$i];
if($n > $last || ($i == $l - 1)) {
$numbers[] = (int) $n;
$last = $n;
$n = '';
}
}
print_r($numbers);
打印
Array
(
[0] => 8
[1] => 9
[2] => 11
[3] => 12
[4] => 13
)
虽然这可能在某种程度上有效,但在很多情况下会失败。因此:
如何获得
89111213
?如果您从数字 8、9、11 等生成它,您应该生成类似 8,9,11,12,13
的内容。
你可以使用explode():
$b = explode(' ', $a);
这看起来很危险。您是否将多个数字连接成一个整数?请注意,整数值有上限,因此您可能会遇到许多元素的错误。
另请注意,当数字具有不同长度时,您的问题无法正确解决,因为您无法知道这些组合(如果有)中的哪一个是正确的
89111213
:
您将需要某种分隔符以使其稳定且面向未来。
<? explode(" ", "a b c d e") ?>