Подтвердить что ты не робот

Инициализировать ассоциативный массив с именами ключей, но пустые значения

Я не могу найти никаких примеров в книгах или в Интернете, описывающих, как правильно инициализировать ассоциативный массив только по имени (с пустыми значениями) - если, конечно, это НЕ правильный (?)

Просто кажется, что есть еще один более эффективный способ сделать это:

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'] = '[email protected]$$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.

Были бы оценены любые рекомендации, предложения или руководство. Спасибо.

4b9b3361

Ответ 1

У вас есть самый понятный вариант.

Но вы могли бы сократить его с помощью array_fill_keys, например:

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

Но если пользователь все равно должен заполнить значения, вы можете просто оставить массив пустым и просто предоставить код примера в index.php. Клавиши будут добавлены автоматически при назначении значения.

Ответ 2

Первый файл:

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

Другой файл:

config::$database = array(
    'driver' => 'mysql',
    'dbhost' => 'localhost',
    'dbname' => 'test_database',
    'dbuser' => 'testing',
    'dbpass' => '[email protected]$$w0rd'
);