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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming 並標籤為 , , , 。將永久鏈結加入書籤。

PHP explode 切割字串 快速取得最後一個值 有 2 則回應

  1. magus 說道:

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

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

發表迴響