我有一个包含文件上传名称的字符串,例如“image.jpg”。 我正在尝试使用explode函数但它返回一个错误“explode()期望参数2是字符串,在...中给出的数组”
我已经尝试寻找原因并将其与PHP.Net上的使用方式进行比较,但无济于事。
$upload_extension = end(explode(".", $feature_icon));
答案 0 :(得分:14)
你不能像以前一样使用end()
end()
-> Parameters ¶数组。此数组通过引用传递,因为它由函数修改。这意味着你必须传递一个实变量而不是一个返回数组的函数,因为只有实际变量可以通过引用传递。
所以喜欢
$feature_icon ="image.jpg";
$upload_extension = explode(".", $feature_icon);
$upload_extension = end($upload_extension);
var_dump($upload_extension );
答案 1 :(得分:4)
尝试单独执行此操作:
$upload_extension = explode(".", $feature_icon);
$upload_extension = end($upload_extension);
答案 2 :(得分:0)
我可能应该比回答已有多年历史的主题更了解,但是对于它的价值:
$upload_extension = end(explode(".", $feature_icon));
(这无效,因为end()仅接受变量中定义的数组,而不能接受函数返回的数组)可以替换为:
$upload_extension = explode ('.', $feature_icon) [count (explode ('.', $feature_icon)) - 1];
与使用中间变量存储数组或使用两行代码(以上均建议)相比,您是否觉得优雅多了还是个人喜好。