PHP explode 切割字串 快速取得最後一個值

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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP explode 切割字串 快速取得最後一個值〉中有 2 則留言

  1. Tsung大大您好,如果確定編碼只有用到Ascii,而且知道長度的話,可能用下面的方法更快

    不過可讀性就會不太好了...
    php > $z = '!@#$';
    php > echo $z[3];
    $
    php > echo $z[2];
    #
    php > echo $z[2].$z[3];
    #$
    php >

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料