严格的标准:只有变量应该通过引用传递,同时回显一些东西

时间:2014-08-06 19:19:35

标签: php standards strict

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

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

2 个答案:

答案 0 :(得分:2)

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

您获得了所需的结果,因为end()做了两件事:

  1. 将数组指针移动到数组的末尾(它无法在原始数组中移动指针,因为没有要引用的数组变量)
  2. 返回数组的最后一个元素(它正在这样做)
  3. http://php.net/manual/en/function.end.php

      

    阵列。此数组通过引用传递,因为它被修改   功能。这意味着你必须传递一个真正的变量,而不是一个   函数返回一个数组,因为只有实际的变量   通过引用传递。

    要获取不带扩展名的文件名,请使用pathinfo()

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

答案 1 :(得分:0)

在PHP中,不要同时放置这么多功能。将它们分成几步。这里以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