2016-07-26 81 views
-1

有些事情是錯誤的,我懷疑它是我的PHP版本,在這臺服務器上是5.2;代碼運行在5.6之前,沒有任何缺陷...array_map的替代方案PHP 5.2

我已經調試到下面的代碼是打破。但是,我沒有得到任何錯誤的短信..

$standard = array_map(function($item) { 
     return $item['standard_resolution']->url; 
    }, $images); 

誰能幫我重做這部分代碼,使其工作在5.2?

+0

你能解釋什麼不能正常工作嗎? – FirstOne

+0

我只是一個500內部錯誤時取消註釋此代碼... @FirstOne – Codehiker

+0

請檢查如何[讓PHP錯誤顯示](http://stackoverflow.com/questions/1053424/how-do-i-get- PHP-錯誤到顯示器)。你也可以檢查日誌... – FirstOne

回答

6

在PHP 5.2上,array_map()沒有任何問題。

問題出在您的代碼中:它使用anonymous functions,但它們是在PHP 5.3中引入的(請參閱文檔頁面底部的更改日誌部分)。

爲了(或更早版本)上運行PHP 5.2的代碼,你必須使用create_function()函數創建一個匿名PHP函數:

$standard = array_map(
    create_function('$item', 'return $item["standard_resolution"]->url;'), 
    $images 
); 

然而,如果可能的話,這是更好的升級PHP解釋器到版本7.0或5.6。 PHP 5.2 is dead and buried超過5年前。

+2

這是一個很好的答案。但我真的希望升級,而不是嘗試使用你給他的代碼解決方案。在他的應用程序實際工作之前,他可能會有更多的代碼更改,而現在仍然沒有任何藉口可以繼續運行PHP 5.2,特別是對於新代碼。 (如果你有一箇舊的應用程序無法升級,你可以放棄,但即使如此,運行這些舊軟件的安全問題和兼容性問題應該足以推動你升級到現在) – Simba