2016-02-26 45 views
0

這裏是我的匿名函數:在PHP中使用匿名函數來改變多個變量外功能

  $step = function() use ($text,$count,$new_text) {       
      $new_text .= $text[$count];            
      $count++; 

我讀壞字符的長文本值和掃描。如果$ text [$ count]的值正確,我想將它添加到新的文本變量中,並通過調用$ step()來增加計數。當然,我可以在我的代碼中重複這兩行,但使用匿名函數看起來要簡單得多。唯一的問題是它不起作用。外部函數中的變量不會改變。

我在做什麼錯。或者,如果有的話,還有什麼不同的方式呢?必須有一種方法可以在函數中抽象幾行重複的代碼。

+0

對於這種情況,'for'或'foreach'似乎更容易嗎? –

回答

1

必須通過參考,如果想功能之後變量的修改版本中進行,這樣傳遞:

<?php 

$text = 'Some text'; 

$anon = function() use (&$text) { 
    $text .= ' and more...' ; 
}; 

$anon(); 

print $text; // returns: Some text and more... 

use聲明只是繼承父範圍的變量。

+0

ffffffft。我應該想到這一點。這是我幾乎從未做過的事情,但仍然如此。 –