我已经做了一些搜索,大多数帖子都使用php explode函数来分隔字符串并将其值存储到数组中。
我需要一种有效的转换方式:
$string = "45,34,65,57,45,23,26,72,73,56";
对于数组,我可以使用$array[3]
访问单个值。
有没有比爆炸更好的方法?
答案 0 :(得分:2)
爆炸是将字符串拆分为数组的最快方法,因为它是一个天真的字符串阅读器,用于搜索分隔符。没有涉及正则表达式引擎开销,就像split / preg_split / ereg等一样。你可以提高性能的唯一方法就是在鼠标背面分割毛发,那就是单引号你的字符串数组,这样它就不会被解析了对于变量。
但是,考虑到示例数组的大小,您可以将pi计算为等于数组中每个数字值的小数位数,并且甚至不会划伤性能问题的表面。
答案 1 :(得分:2)
$desiredPart = 3;
$num = strtok($string, ',');
$part = 1;
while ($part < $desiredPart && $num !== false) {
$num = strtok(',');
$part++;
}
echo $num;
如果您需要处理很长时间,这可能是最有效的,我的意思是 真的很长 ,字符串。对于您已发布的任何大小的示例,请使用explode
。
如果您的部件长度相同,请执行以下操作:
$desiredPart = 3;
$partLength = 2;
$num = substr($string, ($partLength + 1) * ($desiredPart - 1), $partLength);
答案 2 :(得分:1)
您可以使用正则表达式,但速度会慢于explode()
答案 3 :(得分:1)
如果部件的长度不变,则可以检查str_split方法的性能。
答案 4 :(得分:0)
explode()
方法最快。
preg_split()
是一种更灵活的选择,但速度要慢得多。
答案 5 :(得分:-1)
你可以使用regex / substring,但这些在开发/运行时都很慢 最重要的是,爆炸是为你完成的。