Строгие стандарты: по ссылке должны передаваться только переменные - ошибка php

    $file_name = $_FILES['profile_image']['name'];
    $file_ext = end(explode('.', $file_name)); //line 10
    $file_ext = strtolower($file_ext);
    $file_temp = $_FILES['profile_image']['tmp_name'];

Строгие стандарты: только переменные должны передаваться по ссылке в строке 10.

Как избавиться от этой ошибки? Пожалуйста и спасибо вам :)


person Community    schedule 06.08.2012    source источник


Ответы (3)


end() ожидает, что его параметр можно будет передать по ссылке, а по ссылке можно передавать только переменные:

$array = explode('.', $file_name);
$file_ext = end( $array); 

Вы можете исправить это, сначала сохранив массив в переменную, а затем вызвав end().

person nickb    schedule 06.08.2012

Если вам нужен последний элемент в массиве, сделайте следующее:

$arr = explode(".", $file_name);
$file_ext = $arr[count($arr) - 1];

Если вы пытаетесь просто получить расширение из файла, используйте

$ext = pathinfo($file_name, PATHINFO_EXTENSION);
person Matt    schedule 06.08.2012

На самом деле, если вы напишете $ext = end(explode('.', $filename)); для получения расширения файла в php можно показать «Только переменные должны передаваться по ссылке». По этой причине попробуйте использовать его в два этапа, например: $tmp = Explosion('.', $filename); $ext = конец($tmp);

person lmnmamun    schedule 09.11.2017