PHP 切割字串常常使用 explode (以前都使用 split),如果已經確定要取最後的值,或者某個值,要怎麼快速做到呢?
PHP explode 切割字串 快速取得最後一個值
以往常見的寫法,都會是先計算陣列大小,然後直接抓最後一個值,如下範例:
<?php $tmp = explode(',', '1,2,3'); $last = $tmp[count($tmp) - 1]; echo $last; ?>
不過既然是陣列,還有下述兩種作法可以參考看看:
取得最後一個值
<?php $last = end(explode(',', '1,2,3')); echo $last; ?>
<?php $last = array_pop(explode(',', '1,2,3')); echo $last; ?>
依照上述程式直接跑速度測試,各跑 10000000 所耗費的秒數:
- count spend: 6.0898230075836 secs
- end spend: 8.9361491203308 secs
- array_pop spend: 9.2295389175415 secs
但是若將 end、array_pop 不要直接使用,而是用 $tmp 接收,再來 end、array_pop 所耗費的時間如下:
- count spend: 5.5644431114197 secs
- end spend: 4.5907559394836 secs
- array_pop spend: 5.0118000507355 secs
註:時間越短越好
Tsung大大您好,如果確定編碼只有用到Ascii,而且知道長度的話,可能用下面的方法更快
不過可讀性就會不太好了...
php > $z = '!@#$';
php > echo $z[3];
$
php > echo $z[2];
#
php > echo $z[2].$z[3];
#$
php >
嗯嗯,謝謝~
不過我的重點還是需要先切割字串,切割完後取最後的字串~