从函数访问外部变量

时间:2017-01-11 04:10:56

标签: php arrays

我正在尝试计算输入字符串中的正值数。所以,我是

  • 将字符串转换为数组
  • 遍历数组并检查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 作为对函数的引用传递,并在in。中递增。

这是我的输出,

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

通过引用传递似乎不适用于此。是因为我使用的是匿名函数吗?我的预期输出是

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

1 个答案:

答案 0 :(得分:1)

因为你没有传递

$positiveCount = -1;

到你的array_walk()函数。

我认为你需要做

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

像这样。