如何使用 PHP 从 HEREDOC 文本创建数组赋值?
How can I create an array assignment from HEREDOC text using PHP?
我有一个字符串列表需要转换成数组赋值
例如,假设我有一组这样的行:
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);
我有一个字符串列表需要转换成数组赋值
例如,假设我有一组这样的行:
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);