我希望在选择元素中放置$xsl_dir_path(绝对路径)中的每个文件名。 我尝试过以下方法:
$files = glob($xsl_dir_path . "/*.xsl");
array_walk($files, 'basename');
但是它根本不起作用,我仍然可以看到文件的完整名称。我知道当循环遍历$files
并构建option元素时,我可以应用basename
,但我想在任何HTML输出之前这样做。
array_walk
在回调函数接受引用或使用自定义回调函数时非常有用。在这种情况下,basename
参数不是一个引用。
您需要的是array_map
:
$files = glob($xsl_dir_path . "/*.xsl");
$files = array_map('basename', $files);
basename()
不应该改变数组单元格的值,只能返回新值。你需要传递一个实际上改变单元格值的函数给array_walk()
。根据array_walk文档:function my_basename(&$item)
{
$item = basaname($item);
}
$files = glob($xsl_dir_path . "/*.xsl");
array_walk($files, 'my_basename');
试试这个:
function basename_for_walk (&$value, $key) {
$value = basename($value);
}
$files = glob($xsl_dir_path . "/*.xsl");
array_walk($files, 'basename_for_walk');
glob()
函数总是返回完整的文件路径。如果您不想要完整的路径,那么您需要在之后进行截取。 - Pekkabasename()
函数不符合array_walk()
所需的回调类型 - 你需要构建一个自定义函数,直接修改第一个参数。 - Pekka