【问题标题】:Strict standards: Only variables should be passed by reference while echoing something严格的标准:在回显某些东西时,只能通过引用传递变量
【发布时间】:2014-09-29 20:45:18
【问题描述】:

您好,我正在尝试从其他文件名的部分获取文件名... 它会回复我的欲望,但也会显示错误。
我的代码就是这样的。

$fileName = 'somemovieoraudiooranyfiles.mp4';
echo __DIR__ . "/video_views/" . substr($fileName, 0,-strlen(end(explode('.', $fileName)))) . "txt";

【问题讨论】:

  • pathinfo()basename() 可能是您尝试在那里做的更好的方法...

标签: php standards strict


【解决方案1】:

查看end() 的手动条目。它需要一个变量作为参考。 explode()调用的返回不是变量,不能被引用。

您会得到想要的结果,因为end() 做了两件事:

  1. 将数组指针移动到数组末尾(无法移动原始数组中的指针,因为没有数组变量可以引用)
  2. 返回数组的最后一个元素(它正在这样做)

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

数组。这个数组是通过引用传递的,因为它是由 功能。这意味着您必须将其传递给真正的变量,而不是 函数返回一个数组,因为只有实际变量可能是 通过引用传递。

要获取没有扩展名的文件名,请使用pathinfo():

echo __DIR__ . '/video_views/' . pathinfo($fileName, PATHINFO_FILENAME) . '.txt';

【讨论】:

    【解决方案2】:

    在 PHP 中不要同时放置这么多函数。将它们分成步骤。这里 end 以 var 作为参考。这样写;

    $parts = explode('.', $fileName);
    $ext = end($parts);
    $f = substr($fileName, 0,-strlen($ext));
    echo DIR . "/video_views/" . $f . "txt";
    

    使用 PHP 的 pathinfo 可以轻松完成您想要做的事情 http://php.net/manual/en/function.pathinfo.php

    【讨论】:

      猜你喜欢
      • 2013-05-21
      • 1970-01-01
      • 2012-10-25
      • 2012-12-24
      • 2014-02-10
      • 2013-12-28
      • 2017-07-24
      相关资源
      最近更新 更多