【问题标题】:symfony 1.4 - Warning: A non-numeric value encounteredsymfony 1.4 - 警告:遇到非数字值
【发布时间】:2018-05-03 18:21:42
【问题描述】:

警告:在 C:\Program Files (x86)\Ampps\www\Symfony_project\lib\vendor\symfony1\lib\yaml\sfYamlInline.php(138) 中遇到的非数字值:在线运行时创建的函数1

使用 php 7.1

if (
      (1 == count($keys) && '0' == $keys[0])
      ||
    Line 138->  (count($keys) > 1 && array_reduce($keys, create_function('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2))

23 0.1704 3586632 __lambda_func( ) ...\sfYamlInline.php:138

如何解决?

【问题讨论】:

  • Symfony 1 已经有 5 年没有维护了,并且从那时起就与 PHP 版本不完全兼容,所以你很容易得到这样的错误。除了自己修补源之外,您没有太多选择。
  • @chris85 这是create_function 的正确语法(诚然,自从 PHP 5.3 出现以来,没有人应该使用它)
  • 你可能想看看LExpress/symfony1,它是 SF1 的最新分支
  • symfony1 与 PHP 7.1。为什么?
  • @iainn 啊,它是一个eval

标签: php symfony1


【解决方案1】:

有一些与 PHP7.1 兼容的 symfony1 分支。

在这种情况下,您可以通过将'return (integer) $v + $w;' 更改为'return (integer) $v + (integer) $w;' 来轻松修补此问题。

【讨论】:

    【解决方案2】:
    (count($keys) > 1 && array_reduce($keys, create_function('$v,$w', 'return (integer) $v + $w;'), 0) == count($keys) * (count($keys) - 1) / 2))      [position 138:48]    
    

    应该替换为

    (count($keys) > 1 && array_reduce($keys, function($v,$w) { return ((int) $v + (int) $w);}, 0) == count($keys) * (count($keys) - 1) / 2))
    

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多