2017-01-11 1 views
0

입력 문자열에서 양수 값의 수를 계산하려고합니다. 그래서,함수에서 외부 변수에 액세스

  • 오전 배열을 통해 배열에
  • 반복 처리를 문자열로 변환하고 NUM은 내가 foreach 루프를 사용할 때이 잘 작동

긍정적되어 있는지 확인합니다.

그러나 표준 array functions을 사용하여이 문제를 해결하려고합니다.

$handle = fopen("php://stdin","r"); 
$positiveCount = -1; 

fscanf($handle, "%d", $nums); 

$arrayString = fgets($handle); 
$array = explode(" ", $arrayString); 

array_walk($array, function($num, &$positiveCount){ 
    if($num>0){ 
     print("In positive : {$positiveCount}\n"); 
     $positiveCount++; 
    } 
}); 

print("Total Count : {$positiveCount}"); 

나는 $ positiveCount 함수에 참조로 전달에 withing에를 증가 될 것으로 예상.

이 참조에 의해

$ php plusMinusNotWorking.php 
4 
1 2 0 -1 
In positive : 0 
In positive : 1 
Total Count : -1 

패스는 여기에 작동하지 않을 것 같다, 내 출력 . 익명의 함수를 사용하고 있기 때문입니까? 내 예상 출력은 당신이 당신의 array_walk() 함수에

$positiveCount = -1; 

을 통과하지 않기 때문에 그것은이다

$ php plusMinusNotWorking.php 
4 
1 2 0 -1 
In positive : 1 
In positive : 2 
Total Count : 2 

답변

1

입니다.

나는이 같은

array_walk($array, function($num) use (&$positiveCount) { 
    //your code 
} 

뭔가를 할 필요가 있다고 생각합니다.

+0

감사합니다. 나는이 사용법을 보았지만 그것의 문서화를 찾으려고했다. 이 질문은 또한 더 많은 정보를 제공합니다. http://stackoverflow.com/questions/6320521/use-keyword-in-functions-php –

+0

환영합니다.) 네, 매우 유용한 게시물입니다. – SajeshBahing

관련 문제