2010-11-10 162 views
0

我想知道我到底有多少成功和失敗。我想用陣列功能,但我不知道如何從這裏繼續:php - 數組元素

public function array_internal($the_string) 
$pass= Array(); 
$failed = Array(); 
    if(strstr($the_string,"Success")) 
    { 
     $pass[] = +1; 
    } 
    else 
    { 
     $failed[] = +1; 
    } 

count($pass); 

這一步是運行的每個assert函數是這樣的:

try { 
     $this->assertEquals("off", $this->getValue("page")); 
     throw new PHPUnit_Framework_AssertionFailedError("Success"); 
    } catch (PHPUnit_Framework_AssertionFailedError $e) { 
     $this->array_internal($e->toString()); 
    } 

函數本身是好的。我的問題只與櫃檯。

謝謝!

編輯 我試圖做這樣的事情:

$pass= 0; 
$failed = 0; 
public function array_internal($the_string) 

    if(strstr($the_string,"Success")) 
    { 
     $pass += 1; 
    } 
    else 
    { 
     $failed += 1; 
    } 

$pass; 

回答

2

你不是用數組做任何事情,除了計數,那麼,爲什麼不只是使用一個整數?

$pass= 0; 
$failed = 0; 


public function array_internal($the_string) 

    global $pass, $failed; 

    if(strstr($the_string,"Success")) 
    { 
     $pass += 1; 
    } 
    else 
    { 
     $failed += 1; 
    } 

} 
+0

我認爲'array_internal'被多次調用,因爲在功能上沒有循環。全局變量會更好。 - 我看到你已經更新了你的答案;) – Harmen 2010-11-10 16:17:40

+0

@哈曼是的我把初始化了,但原來的問題也是每次重置它。我同意他們應該是全球性的或以其他方式處理。 – Fosco 2010-11-10 16:20:13

+0

你能向我解釋一下如何做全球變量嗎? (並且是的,'array_internal'被多次調用) – Ronny 2010-11-10 16:27:56

2

你爲什麼不只是使用全局變量作爲$pass$fail,您可以通過$pass++$fail++增加?

1
public function array_internal($the_string) 
$pass=0; 
$failed=0; 
if (strstr($the_string,"Success")) 
{ 
    $pass += 1; 
} 
else 
{ 
    $failed += 1; 
} 
+0

我試過這個,但$ pass最後是0。 – Ronny 2010-11-10 16:38:51

+0

@ronny:那麼你在這個'if(strstr($ the_string,「Success」))中有錯誤) ' – Svisstack 2010-11-10 17:48:39

1

$pass[] = +1創建$pass陣列中一個新的密鑰值對,並添加到1新值。這可能不是你想要做的。查看你想做什麼的其他答案。

0
$pass= Array(); 
$failed = Array(); 

創建新的數組實例。您的功能array_internal的返回值將始終爲0或1.您也永遠不會使用$failed

一個更簡單的功能是:

public function array_internal($the_string) 
    $pass = 0; 
    if(strstr($the_string, "Success")) 
    {    
     $pass = 1; 
    } 
    return $pass; 
} 

像Harmen說,你需要使用一個外部INT計數器。與Harmen不同的是,如果可能的話,我會盡量不使用全局變量,而是使用類變量來限制它的範圍。

也許一類,TestClass的靜態變量,稱爲$passes像:

TestClass::$passes += $this->array_internal($e->toString());