2015-09-01 58 views
0

我生成的醇或菜单列表项和测试工作相当不错,在本地主机,但是当我上传到主机我得到的错误:为什么我不能在我的托管中使用array_filter?

Parse error: syntax error, unexpected T_FUNCTION

我一倍,我的代码检查,并在本地主机它仍然可以工作。 请帮我的代码有什么问题。

function generate_li($product, $parent = NULL) { 

     $li = ""; 
     $p1 = array_filter($product, function($a)use($parent) { 
      return $a['parent_id'] == $parent; 
     }); 
     foreach ($p1 as $p) { 

      $inner_li = ""; 
      $p2 = array_filter($product, function($a)use($p) { 
       return $a['parent_id'] == $p['id']; 
      }); 
      if ($p2) { 
       $inner_li = $this->generate_li($product, $p['id']); 
      } 
      $li .= "<li class='dd-item' data-id='" . $p['id'] . "'><div class='dd-handle'>" . $p['text'] . "</div>" . $inner_li . ""; 
      $li .= '<div class="m3dd-handle"><a href="' . base_url('menu_add/' . $p['id'] . '/' . $p['id']) . '">Add</a></div>'; 
      $li .= '<div class="mdd-handle"><a href="' . base_url('menu_edit/' . $p['relative']) . '">'; 
      $li .= '<span class="mclose glyphicon glyphicon-edit"></span></a></div>'; 
      $li .= '<div class="m2dd-handle"><a onclick="return confirm(' . "'" . 'Are you sure want to delete this item' . "'" . ')" href="' . base_url('menu_delete/' . $p['id']) . '"><span class="mclose glyphicon glyphicon-remove"></span></a></div>'; 
      $li .= "</li>"; 
     } 
     $ol = "<ol class='dd-list'>" . $li . "</ol>"; 
     return $ol; 
    } 
+0

IF:'echo phpversion();'<5.3 ==没有你的匿名函数 – Rizier123

+0

如果你的主机运行PHP <5.3.0,那么你需要说服他们升级到支持的版本,或者是时候更改主机.... PHP版本7.0.0将于11月发布 –

+0

@Mark Ba​​ker 但我看到他们说它是测试版。我应该用它吗?如果PHP7.0是测试版 –

回答

2

您的主机可能运行的是旧版本的PHP(低于5.3版本),它不支持闭包或匿名函数。从命令行执行php -v或使用echo PHP_VERSION确认在您的虚拟主机上运行的PHP版本。

由于PHP 5.6是PHP的最新支持,我强烈建议找到一个新主机作为他们运行的PHP版本,因为它已经过时并且不再接收安全补丁,从而容易受到攻击。

+0

噢,上帝,我忘了它 –

+0

*旧版本*我们不能说它死了吗? http://php.net/supported-versions.php它甚至不支持。 +'phpversion()'可能比'phpinfo()'更容易得到OP需要检查的内容:] – Rizier123

+1

我完全忘记了那个函数,它匹配常量。向您显示我多久使用它。 :) –

相关问题