У меня есть список строк, которые мне нужно преобразовать в массив
Например, допустим, у меня есть набор строк, как это:
ctools_export_ui_list_form
masquerade_block_1
switchtheme_switch_form
backup_migrate_ui_manual_backup_load_profile_form
backup_migrate_ui_manual_backup_form
Мне нужно создать переменную присваивания, как это:
$conf['journal_form_ids'] = array(
'ctools_export_ui_list_form' => 0,
'masquerade_block_1' => 0,
'switchtheme_switch_form' => 0,
'backup_migrate_ui_manual_backup_load_profile_form' => 0,
'backup_migrate_ui_manual_backup_form' => 0,
);
Моя идея заключается в использовании некоторого синтаксиса HEREDOC:
$str = <<<EOD
ctools_export_ui_list_form
masquerade_block_1
switchtheme_switch_form
backup_migrate_ui_manual_backup_load_profile_form
backup_migrate_ui_manual_backup_form
EOD
и использовать его для создания текста назначения переменной и eval
это или какой-то другой подходящий метод.
Есть ли встроенные процедуры, чтобы сделать его элегантным?
не уверен, что HEREDOC действительно имеет отношение к чему-либо, вот моя прокомментированная версия:
<?php$foo="ctools_export_ui_list_form
masquerade_block_1
switchtheme_switch_form
backup_migrate_ui_manual_backup_load_profile_form
backup_migrate_ui_manual_backup_form";
//make the array
$x=explode(PHP_EOL,$foo);
//swap the keys and values
$x=array_flip($x);
//set the value of all to 1
$x = array_fill_keys(array_keys($x), 1);
print_r($x);
Других решений пока нет …