如何使用PHP从HEREDOC文本创建数组赋值?
我有一个需要转换为数组赋值的字符串列表 假设我有一组这样的句子:如何使用PHP从HEREDOC文本创建数组赋值?,php,arrays,eval,variable-assignment,heredoc,Php,Arrays,Eval,Variable Assignment,Heredoc,我有一个需要转换为数组赋值的字符串列表 假设我有一组这样的句子: 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( 'ctool
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,
);
我需要创建如下的变量赋值:
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,
);
我的想法是使用一些herdoc语法:
$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
$str=不确定herdeoc与任何事情有什么关系,以下是我的评论版本:
<?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);
HEREDOC用于整洁。我正在复制和粘贴PHP块中长文本列表中的行,我希望避免任何格式错误。$foo可以是您喜欢的任何字符串结构-相同的结果也就是说,您可以使用herdoc建立$foo
的值,然后其余的仍然适用。尽管这看起来像是配置文件,但你不解析一个配置文件,比如INI或JSON吗?@Dagon感谢你给出了一个简洁的答案。为eval
构造一个字符串为我节省了很多不雅的代码,我无法想象eval()
会出现在哪里