-2

可能重复:
解析错误:语法错误,意外的 T_FUNCTION 第 10 行?帮助?
参考 - 这个错误在 PHP 中是什么意思?

这是导致错误的代码。

$remaining = array_filter($allmodels, function ($var) use ($existmodels) {
                return !in_array($var, $existmodels);
        });

代码的逻辑是(下面都是数组)

$remaining = $allmodels - $existmodels;

我认为我的 PHP 版本在服务器中已过时。是不是问题。如何创建类似的代码片段?

谢谢

4

3 回答 3

3

注意:当然全局不是一个好习惯

function fil($var) {
 global $existmodels;
 return !in_array($var, $existmodels);
}

$remaining = array_filter($allmodels, 'fil');
于 2012-10-25T08:18:25.907 回答
2

我是 OO 编程的忠实粉丝,所以只是为了好玩:

class MyArrayOperations
{
  private $base;

  public function __construct(array $base)
  {
    $this->base = $base;
  }

  public function dif (array $vars ) 
  {
    $result = array();
    foreach ( $this->base as $base )
    if(!in_array($base, $vars))
      $result[] = $base;
    return $result;
  }

$result = (new MyArrayOperations($allmodels))->dif($existmodels);

该类可以放在单独的文件中以供重用,然后只需使用 oneliner。而且,当然可以使用一种方便的数组操作来扩展该类。

更新

我意识到 oneliner 只能在 php 5.4+ 中工作,所以对于旧版本使用这个:

$arrayops = new MyArrayOperations($allmodels);
$result = $arrayops->dif($existmodels);

结果在Codepad

于 2012-10-25T08:27:47.407 回答
0

将以下代码添加到 htaccess 解决了问题

# Use PHP 5.3
AddType application/x-httpd-php53 .php
于 2012-10-25T08:32:55.713 回答