2012-08-03 10 views
10

以下は、PHPで私のコードである、と私はエラーを取得しています:静的配列プロパティはPHPではできませんか?

Parse error: syntax error, unexpected '[' in /LR_StaticSettings.php on line 4

<?php 
class StaticSettings{ 
    function setkey ($key, $value) { 
     self::arrErr[$key] = $value; // error in this line 
    } 
} 
?> 

私は静的に使用したくない$this->arrErr[$key]ので、私が取得し、インスタンス/オブジェクトを作成せずに静的プロパティを設定することが可能となります。

このエラーはなぜですか?静的配列を作成できませんか?

別の方法がある場合は、教えてください。おかげであなたは、静的メンバ変数として変数を宣言すると、あなたはそれを参照する際にドル記号と、その名前の前に付ける必要があると思い

+0

あなたのコードは静的メンバー変数として '$ arrErr'を定義していません。あなたは 'public static $ arrErr = array();'と宣言する必要があります – Matt

+0

投票の理由はありませんか?私はこの質問が私を助けることがわかります。だから、投票してください。 ご参考までに、OPは答えを受け入れることを検討する必要があります – goFrendiAsgard

答えて

23

class StaticSettings{ 
    private static $arrErr = array(); 
    function setkey($key,$value){ 
     self::$arrErr[$key] = $value; 
    } 
} 

あなたはこのようにそれをインスタンス化したいです

$o = new StaticSettings; 
$o->setKey("foo", "bar"); 
print_r(StaticSettings::$arrErr); // Changed private to public to get this to work 

this demoで動作しています。

+0

おかげで、私は$サインを見逃した。今それは働いている。 'class StaticSettings { プライベート静的$ arrErr =配列(); 関数setkey($ key、$ value){ self :: $ arrErr [$ key] = $ value; } } '。それは私の愚かな間違いだった。 – user1463076

+0

PHPでは変数を定義する必要はありません。私たちはそれを簡単に使います。 'private static $ arrErr = array();' – user1463076

+1

@ user1463076 - これは真実ではありません。これを省略すると、[致命的なエラーが発生します](http://viper-7.com/JDhBCZ)。 – nickb

0

コードでは、$arrErrを静的メンバー変数として定義していません。

<?php 
class StaticSettings{ 
    public static $arrErr = array(); 

    function setkey($key,$value){ 
     self::arrErr[$key] = $value; 
    } 
} 
?> 
関連する問題