2010-06-23 4 views
-4

У меня есть функция, которая вызывает две других функции:Подсчитайте, сколько раз функции эха заявления

class myClass{ 


    function myFunc(){ 

     for($i=0;$i<500;$i++){ 
      $this->func1(); 
      $this->func2(); 
     } 
    } 

    function func1(){ 
     // Does some stuff 
     // echos statements, and can vary the amount of echoed statements 
     while($something == true) 
      echo "This is from func1, and may echo 0-1000 times"; 
    } 

    function func2(){ 
     // Does some stuff 
     // echos statements, and can vary the amount of echoed statements 
     while($something == true) 
      echo "This is from func2, and may echo 0-1000 times"; 
    } 
} 

То, что я хотел бы сделать, это выяснить способ, что я могу получить общее время функции имеет echo'd что-то и получить эту информацию для отображения в myFunc(). Я написал функцию count, но она не сработала так, как я ожидал.

Любые предложения?

+3

Вы должны были отредактировать исходный вопрос, а не удалить его, тем более, что многие люди нашли время, чтобы написать ответы на него. – webbiedave

+0

Действительно ли «что-то» действительно меняется? иначе у вас будет бесконечный цикл. –

+0

@webbiedave: я извиняюсь, я удалил его, прежде чем понял, что были ответы. вы слишком быстро видишь. – kylex

ответ

4

Вот один из способов:

class myClass{ 
    private $count; 

    function myFunc(){ 

     for($i=0;$i<500;$i++){ 
      $this->func1(); 
      $this->func2(); 
     } 
    } 

    function func1(){ 
     // Does some stuff 
     // echos statements, and can vary the amount of echoed statements 
     while($something == true) { 
      $this->count++; 
      echo "This is from func1, and may echo 0-1000 times"; 
     } 
    } 

    function func2(){ 
     // Does some stuff 
     // echos statements, and can vary the amount of echoed statements 
     while($something == true) { 
      $this->count++; 
      echo "This is from func2, and may echo 0-1000 times"; 
     } 
    } 
} 

или лучший способ:

class myClass{ 
    private $count; 

    function myFunc(){ 

     for($i=0;$i<500;$i++){ 
      $this->func1(); 
      $this->func2(); 
     } 
    } 

    function func1(){ 
     // Does some stuff 
     // echos statements, and can vary the amount of echoed statements 
     while($something == true) { 
      echoMe("This is from func1, and may echo 0-1000 times"); 
     } 
    } 

    function func2(){ 
     // Does some stuff 
     // echos statements, and can vary the amount of echoed statements 
     while($something == true) { 
      echoMe("This is from func2, and may echo 0-1000 times"); 
     } 
    } 

    function echoMe($msg) { 
     echo $msg; 
     $this->count++; 
    } 
} 
+3

Вы должны удалить '$ this-> echo ++' из двух функций. –

+0

спасибо, вот что мне нужно! – kylex

+0

Felix: Спасибо, я обновил второй пример. –

0

Почему нет функции возвращают счетчик эхо:

$echoCount = 0; 
while ($something == true) { 
    echo "This is from func1, and may echo 0-1000 times"; 
    $echoCount++; 
} 

return $echoCount; 

Тогда в MyFunc, вы можете их накопление:

function myFunc() { 

    $totalEchoes = 0; 
    for ($i=0; $i<500; $i++) { 
     $totalEchoes += $this->func1() + $this->func2(); 
    } 
} 
1
function myFunc(){ 
    $echo_count = 0; 
    for($i=0;$i<500;$i++){ 
     $echo_count += $this->func1(); 
     $echo_count += $this->func2(); 
    } 
    echo $echo_count; 
} 

function func1(){ 
    // Does some stuff 
    // echos statements, and can vary the amount of echoed statements 
    $count = 0; 
    while($something == true){ 
     echo "This is from func1, and may echo 0-1000 times"; 
     $count++; 
    } 
    return $count; 
} 

function func2(){ 
    // Does some stuff 
    // echos statements, and can vary the amount of echoed statements 
    $count = 0; 
    while($something == true){ 
     echo "This is from func2, and may echo 0-1000 times"; 
     $count++; 
    } 
    return $count; 
} 
Смежные вопросы