2016-07-26 78 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