web-dev-qa-db-fra.com

Initialiser un tableau associatif avec des noms de clés mais des valeurs vides

Je ne trouve aucun exemple, dans des livres ou sur le Web, décrivant comment on initialiserait correctement un tableau associatif uniquement par son nom (avec des valeurs vides) - à moins, bien sûr, que cela IS la bonne façon (?)

C'est comme s'il y avait une autre façon plus efficace de le faire:

config.php

class config {
    public static $database = array (
        'dbdriver' => '',
        'dbhost' => '',
        'dbname' -> '',
        'dbuser' => '',
        'dbpass' => ''
    );
}

// Is this the right way to initialize an Associative Array with blank values?
// I know it works fine, but it just seems ... longer than necessary.

index.php

require config.php

config::$database['dbdriver'] = 'mysql';
config::$database['dbhost'] = 'localhost';
config::$database['dbname'] = 'test_database';
config::$database['dbuser'] = 'testing';
config::$database['dbpass'] = 'P@$$w0rd';

// This code is irrelevant, only to show that the above array NEEDS to have Key
// names, but Values that will be filled in by a user via a form, or whatever.

Toute recommandation, suggestion ou orientation serait appréciée. Merci.

53
NYCBilly

Ce que vous avez est l'option la plus claire.

Mais vous pouvez le raccourcir en utilisant array_fill_keys , comme ceci:

$database = array_fill_keys(
  array('dbdriver', 'dbhost', 'dbname', 'dbuser', 'dbpass'), '');

Mais si l'utilisateur doit de toute façon remplir les valeurs, vous pouvez simplement laisser le tableau vide et simplement fournir l'exemple de code dans index.php. Les clés seront automatiquement ajoutées lorsque vous attribuez une valeur.

54
GolezTrol

Premier fichier:

class config {
    public static $database = array();
}

Autre fichier:

config::$database = array(
    'driver' => 'mysql',
    'dbhost' => 'localhost',
    'dbname' => 'test_database',
    'dbuser' => 'testing',
    'dbpass' => 'P@$$w0rd'
);
1
Seth