【问题标题】:Trouble echoing the end of my array [duplicate]无法回显我的数组的末尾[重复]
【发布时间】:2013-06-28 18:33:38
【问题描述】:

我正在尝试获取上传文件的扩展名并将其回显到我的页面上。

$file_name = $_FILES['profile_pic']['name'];
$file_extn = end(explode('.', $file_name));
$file_temp = $_FILES['profile_pic']['tmp_name'];

echo $file_extn;

我收到的错误是

严格标准:在第 67 行的 C:\xampp\htdocs\reptile_forum+help\includes\widgets\logged_in.php 中,只能通过引用传递变量。

第 67 行是"$file_ext ="

我没有正确使用end() 吗?有什么其他方法可以让我得到相同的结果吗?

注意:当我删除 end() 并使用 print_r() 时,数组显示完美,似乎 end() 没有注册数组或类似的东西。

【问题讨论】:

  • 这个问题在这里被问了一百万次stackoverflow.com/questions/173868/…
  • 如果还想爆,诀窍就是把它做成两个语句:P
  • 在询问php.net/manual/en/function.end.php 之前,您是否阅读了手册?关于使用end 的所有内容都在此处进行了解释。
  • 不要使用数组/字符串操作来获取文件扩展名。 $ext = pathinfo($file_name, PATHINFO_EXTENSION) 更容易

标签: php


【解决方案1】:

主要问题是您完全错误地解决了这个问题。当手术刀可以使用时,不要使用一堆火箭筒:

$file_extn = pathinfo($file_name, PATHINFO_EXTENSION);

没有数组,没有爆炸。只需一段简单的代码,就可以清楚地了解您要做什么。

【讨论】:

    【解决方案2】:

    试试这个:

    $file_name = $_FILES['profile_pic']['name'];
    $file_extn = pathinfo($file_name, PATHINFO_EXTENSION);
    $file_temp = $_FILES['profile_pic']['tmp_name'];
    
    echo $file_extn;
    

    问题在于您试图将其分解并通过单个操作将结果发送到 end 函数。它适用于大多数方法,但不适用于这个方法,因为它需要一个变量作为引用传递。

    我将其更改为使用 pathinfo,这是查找文件扩展名的更好方法。你可以在这里阅读:

    http://php.net/manual/en/function.pathinfo.php

    【讨论】:

    • 这行不通。这 ;缺少您正在尝试回显数组!?
    • 不是数组,是文件扩展名。
    • 这是有道理的。我在 php.net 上搜索类似的东西,所以我不会发现自己筛选数百万个冗余问题以避免成为那些冗余问题之一,但这一切都归结为正确地措辞你的问题和搜索标准。如此简单的事情,几天不睡觉就走出窗外。 XD
    • 别担心,每个人都会遇到这种情况,这都是关于措辞的:)
    猜你喜欢
    • 2012-11-17
    • 2017-04-17
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2017-01-27
    • 2013-09-06
    • 2020-09-30
    • 2014-08-11
    相关资源
    最近更新 更多