我需要得到字符串的最后一个字符。 假设我有“测试者”作为输入字符串,我希望结果是“s”。PHP中怎么做呢?


当前回答

不同语言(包括C sharp和PHP)中的字符串也被认为是字符数组。

知道在理论上数组操作应该比字符串操作快,

$foo = "bar";


$lastChar = strlen($foo) -1;
echo $foo[$lastChar];

$firstChar = 0;
echo $foo[$firstChar];

然而,标准数组函数像

count();

对字符串无效。

其他回答

第二个参数使用带负数的substr()。$newstring = substr($string1, -1);

在PHP 7.1中你可以这样做(接受负字符串偏移量的rfc):

<?php
$silly = 'Mary had a little lamb';
echo $silly[-20];
echo $silly{-6};
echo $silly[-3];
echo $silly[-15];
echo $silly[-13];
echo $silly[-1];
echo $silly[-4];
echo $silly{-10};
echo $silly[-4];
echo $silly[-8];
echo $silly{3}; // <-- this will be deprecated in PHP 7.4
die();

我让你猜一下输出。

同时,我在xenonite的性能代码中添加了以下结果:

Substr()耗时7.0334868431091秒 数组访问花费了2.3111131191254秒 直接字符串访问(负字符串偏移量)花费了1.7971360683441秒

substr($string, -1) 
substr("testers", -1); // returns "s"

或者,对于多字节字符串:

mb_substr("multibyte string…", -1); // returns "…"

Siemano,只获取所选目录下的php文件:

$dir    = '/home/zetdoa/ftp/domeny/MY_DOMAIN/projekty/project';
$files = scandir($dir, 1);


foreach($files as $file){
  $n = substr($file, -3);
  if($n == 'php'){
    echo $file.'<br />';
  }
}