2017-01-11 8 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}"); 
    

    私は、関数への参照として渡されたとしてwithingをインクリメントすることが$ positiveCountを期待。

    これは私出力され、参照することにより

    $ 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

    であるあなたがあるarray_walk()関数に

    $positiveCount = -1; 
    

    を渡していないからです。

    私はあなたがこのような

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

    何かをする必要があると思います。

    +0

    ありがとうございます。私はこの使用法を見てきましたが、ドキュメントを理解しようとしていました。この質問にはさらに多くの情報があります。 http://stackoverflow.com/questions/6320521/use-keyword-in-functions-php –

    +0

    ようこそ)、はい、非常に有用な投稿です。 – SajeshBahing

    関連する問題