我正在尝试计算输入字符串中的正值数。所以,我是
当我使用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
答案 0 :(得分:1)
因为你没有传递
$positiveCount = -1;
到你的array_walk()函数。
我认为你需要做
array_walk($array, function($num) use (&$positiveCount) {
//your code
}
像这样。