2012-08-03 9 views
10

Poniżej jest mój kod w php, a ja dostaję błąd:Czy nieruchoma tablica nie jest możliwa w 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 
    } 
} 
?> 

Chcę używać statycznie nie $this->arrErr[$key] tak, że mogę dostać i ustawić właściwości statycznych bez tworzenia instancji/przedmiot.

Dlaczego ten błąd? Czy nie możemy stworzyć statycznej tablicy?

Jeśli jest inny sposób, proszę powiedz mi. Dzięki

+0

Twój kod nie definiuje '$ arrErr' jako statycznej zmiennej składowej. Powinieneś zadeklarować go jako 'public static $ arrErr = array();' – Matt

+0

Nie ma powodu do przegłosowania? Uważam, że to pytanie mi pomaga. Więc głosuj w górę. BTW, OP powinien rozważyć akceptację odpowiedzi – goFrendiAsgard

Odpowiedz

23

trzeba by zadeklarować zmienną jako zmiennej składowej statycznej i poprzedzić jego nazwę znakiem dolara kiedy można odwołać go:

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

Byłbyś oznacz ją tak:

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

Możesz zobaczyć, działa w this demo.

+0

Hej dzięki. Brakowało mi znaku $. teraz działa. 'klasa StaticSettings { private static $ arrErr = array(); funkcja setkey ($ key, $ value) { self :: $ arrErr [$ key] = $ wartość; } } '. to był mój głupi błąd. – user1463076

+0

W php nie ma potrzeby definiowania zmiennej. po prostu go używamy. Nie trzeba pisać, 'private static $ arrErr = array();' – user1463076

+1

@ user1463076 - To nie jest prawda. Gdy go pominiesz, [generowany jest błąd krytyczny] (http://viper-7.com/JDhBCZ). – nickb

0

Twój kod nie definiuje $arrErr jako statycznej zmiennej składowej. Należy zadeklarować go jako

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

    function setkey($key,$value){ 
     self::arrErr[$key] = $value; 
    } 
} 
?> 
Powiązane problemy