亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php on line 15請問錯誤原因是?怎么解決?

php on line 15請問錯誤原因是?怎么解決?

PHP C
互換的青春 2022-07-20 15:11:58
我想用我自己的方法:我的實現思路是先獲取文件名稱,然后用split()函數以符號“.”來分割文件名,最后用end()函數獲取分割后所得數組的最后一個元素,就得出擴展名了,代碼如下:$filename=$file['name']; //單獨輸出filename是可以得出值的$filetype=end(split(".",$filename)); echo $filetype;運行后報錯如下:cranberryStrict Standards: Only variables should be passed by reference in D:\AppServ\www\myweb\uploadfile.php on line 15請問錯誤原因是?怎么解決?
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

不用這么麻煩,先用這個函數basename()獲得文件的文件名.
然后用$type = explode(".",$name); $type = @$type[1]; 這樣就獲得了后綴了.

查看完整回答
反對 回復 2022-07-24
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

解決你的問題的方法就是,分開寫代碼,即:
$filearr = split(".",$filename);
$filetype = end($filearr);

split 函數用來分割字符串的時候,基本等同于函數 preg_grep,分割表達式可以是一個正則表達式,也可以是一個普通字符串,所以本身的執行效率很低,這一點你要記得……
所以,實現你現在的這個需求的話,最好用explode函數,使用普通字符作為分割表達式……

但是也的確如樓上所說,split 函數(PHP里)已經棄用,你可以使用 preg_match、preg_match_all 、preg_grep 等使用正則表達式作為分割的函數來替代。

就整個你的需求而言,你的思路還不很好,當一個文件名是【a.b.c.d.e.f.g.php】的時候,程序要浪費多余的資源來分割其實你不用的a、b、c……,
所以要簡單滿足你取后綴名的需求的代碼應該是:
$filetype=substr(strrchr($filename,'.'),1);

此外還有:$path_info = pathinfo($filename); $filetype = $path_info['extension']; 其實不是很推薦。

下面比較一下它們各自的執行效率:
設文件名是:aaa.bb.php、循環執行10000次;執行10次取平均值:
split + end :0.067644s
explode + end :0.016251s
pathinfo + ['extension'] :0.018983s
strrchr + substr :0.008611s


查看完整回答
反對 回復 2022-07-24
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

Function split() is deprecated,,spilt函數被棄用,可以用explode

查看完整回答
反對 回復 2022-07-24
  • 3 回答
  • 0 關注
  • 446 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號