2012-10-25 74 views
-2

Possible Duplicate:
Parse error: syntax error, unexpected T_FUNCTION line 10 ? help?
Reference - What does this error mean in PHP?解析錯誤:語法錯誤,意想不到T_FUNCTION

這是導致錯誤的代碼。

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

邏輯的代碼是(以下均爲陣列)

$remaining = $allmodels - $existmodels; 

我覺得我的PHP版本的服務器已經過時。這是問題嗎?我如何創建一個類似的代碼片段?

感謝

+0

*(參考)* http://php.net/callbacks – Gordon

+0

什麼是你的託管服務PHP版本?如果它太過時了,你可以考慮遷移。在5.2或更高版本上開始一個新項目是不值得的。 –

+0

感謝支持人員 – Techie

回答

2

我面向對象編程的大風扇,所以只是爲了好玩:

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+,所以對於老版本使用這樣的:Codepad

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

結果。

+0

這只是搞砸的東西......不管-1 – dynamic

+0

@ yes123你是對的,謝謝指出,我更新了一個例子在這裏:http: //codepad.org/A3Ut1tgl – JvdBerg

3

注:當然全球的是不是一個很好的初步實踐

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

$remaining = array_filter($allmodels, 'fil'); 
+3

但是...全局變量? :( – nyson

+0

他說他使用舊的PHP版本:( – dynamic

0

添加以下代碼htaccess的解決了這個問題

# Use PHP 5.3 
AddType application/x-httpd-php53 .php 
相關問題