Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

7年前关闭。



Improve this question




在PHP中获取文件的基本名称(不带扩展名的文件名)的推荐方法是什么?
echo basename('foo.jpg', '.jpg');
// outputs "foo"

echo pathinfo('foo.jpg', PATHINFO_FILENAME);
// outputs "foo"

显然,两者都产生相同的输出。与另一种相比,使用一种有什么优势?

在性能方面,basename()似乎在1,000,000次迭代中快了约300ms:
<?php

$f = 'foo.jpg';
$n = 1000000;

$start = microtime(true);

for ($i = 0; $i < $n; $i++) {
    basename($f);
}

$stop1 = microtime(true);

for ($i = 0; $i < $n; $i++) {
    pathinfo($f, PATHINFO_FILENAME);
}

$stop2 = microtime(true);

echo "Basename result: " . ($stop1 - $start) . " seconds\n";
echo "Pathinfo result: " . ($stop2 - $stop1) . " seconds\n";

输出:
Basename result: 1.0358278751373 seconds
Pathinfo result: 1.3277871608734 seconds

除了边际性能提升之外,我还对这些功能在后台如何实现感兴趣?在两种情况下,用于检索基本名称的基础算法是否相似?

最佳答案

如果只需要基本名称,则使用基本名称功能。在任何情况下,一如既往,请尝试使用耗费较少的操作;当可以直接在字符串中使用基本名称功能获得所需的信息时,为什么要创建不需要的信息数组(使用pathinfo)?

关于php - 哪个函数更适合于检索PHP : basename or pathinfo?中文件的基本名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18662127/

10-11 03:09