【发布时间】:2011-02-18 02:15:03
【问题描述】:
我需要phpexplode()的功能,但没有分隔符。
例如,将变量“12345”变成一个数组,分别保存每个数字。
这可能吗?我已经用谷歌搜索了,但只找到了explode(),这似乎不起作用。
谢谢!
【问题讨论】:
我需要phpexplode()的功能,但没有分隔符。
例如,将变量“12345”变成一个数组,分别保存每个数字。
这可能吗?我已经用谷歌搜索了,但只找到了explode(),这似乎不起作用。
谢谢!
【问题讨论】:
使用 php 中的任何字符串:
$foo="12345";
echo $foo[0];//1
echo $foo[1];//2
//etc
或(来自 preg_split())手册中的页面
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
甚至更好:
$str = 'string';
$chars=str_split($str, 1)
print_r($chars);
preg_split() 与 str_split() 的基准
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$str = '12345';
$time_start = microtime_float();
for ($i = 0; $i <100000; $i++) {
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
//$chars=str_split($str, 1);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "$time seconds\n";
结果:
str_split =0.69
preg_split =0.9
【讨论】:
preg_split 将是一个非常糟糕的选择
如果你真的想创建一个数组,那么使用str_split(),即,
echo '<pre>'. print_r(str_split("123456", 1), true) .'</pre>';
会导致
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
【讨论】:
你的号码可以变成字符串,然后像数组一样操作
$i = 2342355; $i=(string)$i;
//or
$i='234523452435234523452452452';
//then
$i[2]==4
//numeration started from 0
【讨论】: