从数组中的filename中提取basename

时间:2012-04-12 20:22:38

标签: php arrays extract explode

我有以下字符串的数组。 首先我使用爆炸“\ n”和输出如下。

[1]=> string(121) "/Microsoft/Windows/Ravemp2300Handler/DeviceArrival/a.exe" 
[2]=> string(139) "/Microsoft/Windows/EventHandlers/Ravemp2300Arrival/b.exe" 
[3]=> string(89) "/Microsoft/Windows/DeviceHandlers/Rio600Handler/c.exe" 
[4]=> string(103) "/Microsoft/Windows/Rio600Handler/EventHandlers/d.exe" 

以下数组将提取a.exe,b.exe等,如下所示。

[1]=> string(121) "a.exe" 
[2]=> string(139) "b.exe" 
[3]=> string(89) "c.exe" 
[4]=> string(103) "d.exe" 
谁知道如何解决这个问题呢?对此,我真的非常感激。提前谢谢你。

我得到了解决方案,感谢Leven和EmilVikström的替代解决方案。

$array2 = array_map('basename', $array1);

2 个答案:

答案 0 :(得分:9)

您正在寻找basename():

$array2 = array_map('basename', $array1);

答案 1 :(得分:1)

function lastPart($str) {
  return end(explode('/', $str));
}

$array2 = array_map('lastPart', $array1);

这样做是将函数lastPart应用于数组的每个元素。 array_map被称为 higher-order function ,因为它将另一个函数作为它的参数,这是一个非常常见的习惯用法,它被称为 functional编程。 PHP不起作用,但我仍然喜欢这种类型的解决方案。

array_filterusort是其他两个高阶函数,非常值得一试。

对于更常见的命令性解决方案,您可以运行foreach循环:

$array2 = array();
foreach($array1 as $value) {
  $array2[] = end(explode('/', $value));
}