452 Stimmen

PHP-Konstanten, die Arrays enthalten?

Dies ist fehlgeschlagen:

 define('DEFAULT_ROLES', array('guy', 'development team'));

Offenbar können Konstanten keine Arrays enthalten. Was ist der beste Weg, um dies zu umgehen?

define('DEFAULT_ROLES', 'guy|development team');

//...

$default = explode('|', DEFAULT_ROLES);

Dies scheint ein unnötiger Aufwand zu sein.

10voto

Rabin Lama Dong Punkte 2218

PHP 7+

Ab PHP 7 können Sie einfach die define() Funktion, um ein konstantes Array zu definieren:

define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // outputs "cat"

9voto

Mahesh Talpade Punkte 139

Sie können sie als JSON-String in einer Konstante speichern. Und aus der Sicht der Anwendung kann JSON auch in anderen Fällen nützlich sein.

define ("FRUITS", json_encode(array ("apple", "cherry", "banana")));    
$fruits = json_decode (FRUITS);    
var_dump($fruits);

9voto

Altaf Hussain Punkte 5121

Beginnend mit PHP 5.6 können Sie konstante Arrays definieren, indem Sie const Schlüsselwort wie unten

const DEFAULT_ROLES = ['test', 'development', 'team'];

und verschiedene Elemente können wie folgt aufgerufen werden:

echo DEFAULT_ROLES[1]; 
....

Beginnend mit PHP 7 können konstante Arrays mit define wie unten:

define('DEFAULT_ROLES', [
    'test',
    'development',
    'team'
]);

und auf verschiedene Elemente kann auf die gleiche Weise zugegriffen werden wie zuvor.

4voto

Mohit Rathod Punkte 839

Wenn Sie PHP 7 & 7+ verwenden, können Sie fetch auch wie folgt verwenden

define('TEAM', ['guy', 'development team']);
echo TEAM[0]; 
// output from system will be "guy"

4voto

Thielicious Punkte 3590

Kann sogar mit assoziativen Arrays arbeiten zum Beispiel in einer Klasse.

class Test {

    const 
        CAN = [
            "can bark", "can meow", "can fly"
        ],
        ANIMALS = [
            self::CAN[0] => "dog",
            self::CAN[1] => "cat",
            self::CAN[2] => "bird"
        ];

    static function noParameter() {
        return self::ANIMALS[self::CAN[0]];
    }

    static function withParameter($which, $animal) {
        return "who {$which}? a {$animal}.";
    }

}

echo Test::noParameter() . "s " . Test::CAN[0] . ".<br>";
echo Test::withParameter(
    array_keys(Test::ANIMALS)[2], Test::ANIMALS["can fly"]
);

// dogs can bark.
// who can fly? a bird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X