PHP最有效的方式转换字符串与逗号分隔值到数组?

时间:2011-05-27 07:54:39

标签: php arrays string dynamic-arrays

我已经做了一些搜索,大多数帖子都使用php explode函数来分隔字符串并将其值存储到数组中。

我需要一种有效的转换方式:

$string = "45,34,65,57,45,23,26,72,73,56";

对于数组,我可以使用$array[3]访问单个值。

有没有比爆炸更好的方法?

6 个答案:

答案 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方法的性能。

http://www.php.net/manual/en/function.str-split.php

答案 4 :(得分:0)

explode()方法最快。

preg_split()是一种更灵活的选择,但速度要慢得多。

答案 5 :(得分:-1)

爆炸有什么不对?

你可以使用regex / substring,但这些在开发/运行时都很慢 最重要的是,爆炸是为你完成的。