喵喵时光机
因此,我对答案中提到的某些针对大量整数的方法的性能感到好奇。制备只是创建一个由0到100之间的100万个随机整数组成的数组。然后,我强加了它们以获得字符串。 $integers = array(); for ($i = 0; $i < 1000000; $i++) { $integers[] = rand(0, 100); } $long_string = implode(',', $integers);方法1这是Mark的回答:$integerIDs = array_map('intval', explode(',', $long_string));方法2这是JSON方法: $integerIDs = json_decode('[' . $long_string . ']', true);方法3我想出了这个作为Mark答案的修改。这仍在使用explode()函数,但不是使用调用而是array_map()使用常规foreach循环来完成这项工作以避免产生开销array_map()。我也在用(int)vs进行解析intval(),但是我都尝试了两者,并且在性能方面并没有太大差异。 $result_array = array(); $strings_array = explode(',', $long_string); foreach ($strings_array as $each_number) { $result_array[] = (int) $each_number; }结果:Method 1 Method 2 Method 30.4804770947 0.3608930111 0.33877515790.4748001099 0.363986969 0.37625288960.4625790119 0.3645150661 0.33359599110.5065748692 0.3570590019 0.33657503130.4803431034 0.4135499001 0.33303308490.4510772228 0.4421861172 0.3411760330.503674984 0.3612480164 0.35617494580.5598649979 0.352314949 0.37661790850.4573421478 0.3527538776 0.34734392170.4863037268 0.3742785454 0.3488383293底线是平均值。看起来第一种方法对于100万个整数来说要慢一些,但是我没有注意到答案中所述方法2的性能提高了3倍。事实证明,foreach循环是我而言最快的循环。我已经使用Xdebug完成了基准测试。编辑:距离答案最初发布已经有一段时间了。为了明确起见,基准测试是在php 5.6中完成的。
狐的传说
将此代码与闭包一起使用(在中引入PHP 5.3),它比接受的答案快一点,对我来说,将其强制转换为整数的意图更加清楚:// if you have your values in the format '1,2,3,4', use this before:// $stringArray = explode(',', '1,2,3,4');$stringArray = ['1', '2', '3', '4'];$intArray = array_map( function($value) { return (int)$value; }, $stringArray);var_dump($intArray);输出将是:array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4)}