2013-05-11 13 views
7

Mam ciąg znaków, który będzie zawierać nazwę przesłania pliku, na przykład "image.jpg". Próbuję użyć funkcji eksplodującej, ale zwraca błąd "explode() oczekuje, że parametr 2 będzie ciągiem znaków, tablica podana w ..."Używanie funkcji end() z funkcją explode() nie działa

Próbowałem szukać przyczyn i porównywać go z tym, jak użycie jest instruowane na PHP.Net, ale bez skutku.

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

Pokaż nam, jak można zdefiniować '$ feature_icon' –

+1

' $ powinien feature_icon' być ciągiem, a nie tablicą. – Vulcan

+6

Możesz mimo wszystko rozważyć pathinfo() ... – SEngstrom

Odpowiedz

12

nie można używać end() jak robisz od

end() -> Parameters ¶ tablicy. Ta tablica jest przekazywana przez odniesienie, ponieważ jest modyfikowana przez funkcję. Oznacza to, że musisz przekazać mu rzeczywistą zmienną, a nie funkcję zwracającą tablicę, ponieważ tylko rzeczywiste zmienne mogą być przekazywane przez odniesienie.

tak zrobić jak

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

Live result

4

Spróbuj zrobić to w ten sposób oddzielnie:

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

W rzeczywistości +1 jako 'end()' oczekuje argumentu przez odniesienie; er go, a nie wynik wywołania funkcji lub wartości dosłowności (* dla pedanterii, bez referencyjnego zwracającego wywołania funkcji *) – Dan

+1

Nienawidzę tego ścisłego :( –

Powiązane problemy