使用带爆炸()的end()不起作用

时间:2013-05-11 14:32:22

标签: php arrays string split

我有一个包含文件上传名称的字符串,例如“image.jpg”。 我正在尝试使用explode函数但它返回一个错误“explode()期望参数2是字符串,在...中给出的数组”

我已经尝试寻找原因并将其与PHP.Net上的使用方式进行比较,但无济于事。

$upload_extension = end(explode(".", $feature_icon));

3 个答案:

答案 0 :(得分:14)

你不能像以前一样使用end()

  

end() -> Parameters ¶数组。此数组通过引用传递,因为它由函数修改。这意味着你必须传递一个实变量而不是一个返回数组的函数,因为只有实际变量可以通过引用传递。

所以喜欢

$feature_icon ="image.jpg";
$upload_extension =  explode(".", $feature_icon);
$upload_extension = end($upload_extension);
var_dump($upload_extension );

Live result

答案 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];

与使用中间变量存储数组或使用两行代码(以上均建议)相比,您是否觉得优雅多了还是个人喜好。