我需要从多个选择中发送一个关联数组。
我有这段代码:
<select name="frontend_footer_menu_pages[]" id="frontend_footer_menu_pages" class="form-control" multiple>
<?php foreach($pages as $page): ?>
<option value="<?php echo $page->url; ?>">
<?php echo $page->page; ?>
</option>
<?php endforeach; ?>
这就产生了:
Array(
[0] => first/page,
[1] => second/page
)
我需要获得这样的东西:
Array(
['first/page'] => 'First Page',
['second/page'] => 'Second Page']
);
我无法以关联方式生成名称/值,而不能以数字方式生成,因为我无法检索选项的内容($ page-&gt; page)
提前谢谢
答案 0 :(得分:0)
提交表单时,您确实会在PHP中获得类似这样的数组:
Array(
[0] => first/page,
[1] => second/page
)
这是它的工作原理,我不建议尝试改变这种行为。但是,您可以将其转换为您喜欢的关联数组。
首先为您的页面创建一个关联数组,这样您就可以快速找到给定网址的页面名称:
// Create hash for the pages, keyed by their page name:
foreach ($pages as $page) {
$pageHash[$page->page] = $page->url;
}
您已经提交了所选项目的列表。您现有的代码将具有以下内容:
$selected = $_POST['frontend_footer_menu_pages'];
现在,要将此转换为您要查找的关联数组,只需将array_intersect
与我们在上面创建的哈希一起使用,然后使用array_flip
交换键和值:
$selected = array_flip(array_intersect($pageHash, $selected));
结果将是这样的:
Array
(
[first/page] => First Page
[second/page] => Second Page
)