2013-05-11 9 views
7

Ho una stringa che conterrà un nome di upload di file, ad esempio "image.jpg". Sto cercando di usare la funzione explode ma restituisce un errore "explode() si aspetta che il parametro 2 sia stringa, matrice data in ..."Utilizzando end() con explode() non funziona

Ho provato a cercare i motivi per cui e confrontandolo a come l'uso è indicato su PHP.Net ma inutilmente.

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

mostrarci come si definisce '$ feature_icon' –

+1

' $ feature_icon' dovrebbe essere una stringa, non un array. – Vulcan

+6

Si può prendere in considerazione pathinfo() in ogni caso ... – SEngstrom

risposta

12

non è possibile utilizzare end() come si sta facendo da quando

end() -> Parameters ¶ La matrice. Questo array viene passato per riferimento perché modificato dalla funzione. Ciò significa che devi passargli una variabile reale e non una funzione che restituisce un array perché solo le variabili effettive possono essere passate per riferimento.

in modo da fare come

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

Live result

4

Prova a fare in questo modo a parte:

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

In realtà, +1 come 'end()' si aspetta un argomento per riferimento; er andare, non il risultato di una chiamata di funzione o valore letterale (* per pedanteria, una funzione chiamata non-reference ritorno *) – Dan

+1

Odio questo rigoroso :( –

Problemi correlati