PHP array_walk 什么都不做?
我想将每个文件名放在 select 元素的 $xsl_dir_path (绝对路径)中。我已经尝试过:
$files = glob($xsl_dir_path . "/*.xsl");
array_walk($files, 'basename');
但它根本不起作用,我仍然可以看到文件的全名。 我知道我可以在遍历$files
时应用basename
并构建option元素,但我想在任何 html 输出之前执行此操作。
I'd like to put each file name in $xsl_dir_path (absolute path) in select element. I've tried this:
$files = glob($xsl_dir_path . "/*.xsl");
array_walk($files, 'basename');
but it's not working at all, i can still see the full names of the files. I know i can apply basename
when lopping through $files
and build the option elements, but i'd like to do it before any html output.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当您的回调函数接受引用或使用用户定义的回调函数时,
array_walk
非常有用。在这种情况下,basename
参数不是引用。你想要的是
array_map
:array_walk
is useful when your callback function accepts a reference or when you use user-defined callback functions. In this case, thebasename
argument is not a reference.What you want is
array_map
:试试这个:
Try this:
这是因为
basename()
不应该更改数组单元格的值,而只是返回新值。您需要向 array_walk() 传递一个实际更改单元格值的函数。基于 array_walk 文档:That's because
basename()
isn't supposed to change the value of the array cells, only to return the new values. You need to pass toarray_walk()
a function that actually changes the value of the cell. Based on array_walk docs: