【问题标题】:Alternative for array_map PHP 5.2array_map PHP 5.2 的替代方案
【发布时间】:2016-07-26 13:51:13
【问题描述】:

出了点问题,我怀疑是我的 PHP 版本在这台服务器上是 5.2;代码之前在 5.6 上运行,没有任何缺陷......

我已将其调试为以下出错的代码。但是,我没有收到任何错误消息..

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

谁能帮我重做这部分代码,让它在 5.2 中工作?

【问题讨论】:

  • 你能解释一下什么地方不能正常工作吗?
  • 取消注释此代码时我只是一个 500 内部错误...@FirstOne
  • 请检查如何get php errors to display。你也可以查看日志...
  • 问题不是array_map,而是 匿名函数 在 5.2 中不存在。您可以尝试改用create_function,或者您可以尝试停止使用古老而死的 PHP 版本(如果可能的话)。尽管在 5.2 上运行为 5.3+ 设计的代码时,您可能会遇到更多问题。
  • PHP 5.2?严重地?你知道那是几岁吗?该版本的 PHP 在 2009 年被取代。在 5.2 和当前版本之间,功能发生了许多重大更改,包括对默认行为的一些重大更改。如果您在 PHP 5.6 中编写高质量的代码,那么它在 5.2 中成功运行的机会几乎为零。您必须放弃几乎所有当前的最佳实践编程标准才能在 5.2 中成功工作。更不用说 5.2 中所有已知的安全漏洞;您的网站一上线就会不安全。

标签: php runtime-error php-5.2 array-map


【解决方案1】:

array_map() 在 PHP 5.2 上没有任何问题。

问题出在您的代码中:它使用了anonymous functions,但它们是在 PHP 5.3 中引入的(请参阅文档页面底部的 Changelog 部分)。

为了在 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 年多以前。

【讨论】:

  • 这是一个很好的答案。但是我真的希望OP升级而不是尝试使用您给他的代码解决方案。在他的应用程序真正运行之前,他可能会进行比这更多的代码更改,而且今天仍然没有任何借口继续运行 PHP 5.2,尤其是对于新代码。 (如果您有一个无法升级的旧应用程序,您可以原谅,但即便如此,运行这些旧软件的安全问题和兼容性问题应该足以推动您升级)
猜你喜欢
  • 2011-10-03
  • 2012-04-22
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2014-12-30
相关资源
最近更新 更多