我有包含以下字符串的数组。首先IM使用爆炸"'",输出如下。
[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 和 Emil Vikström 的替代解决方案。
$array2 = array_map('basename', $array1);
你正在寻找basename():
$array2 = array_map('basename', $array1);
function lastPart($str) {
return end(explode('/', $str));
}
$array2 = array_map('lastPart', $array1);
这样做是将函数lastPart
应用于数组的每个元素。 array_map被称为高阶函数,因为它接受另一个函数作为参数,这是所谓的函数编程中非常常见的习语。PHP 不起作用,但我仍然喜欢这种类型的解决方案。
array_filter和usort是另外两个高阶函数,非常值得一试。
对于更常见的命令式解决方案,您可以只运行 foreach 循环:
$array2 = array();
foreach($array1 as $value) {
$array2[] = end(explode('/', $value));
}