2016-08-15 27 views
1

我需要從多重選擇發送關聯數組。發送來自多重選擇的關聯數組

我有這樣的代碼:

<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'] 
); 

我不是能夠產生名稱/ val UE在相關聯的方式而不是數字的方式,因爲我無法檢索選項($頁面級>頁)

的內容預先感謝您

+1

它會發送字符串值的列表,從'<選項值的值=「」',而不是一個ASSOC聯合數組。 – developerwjk

回答

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 
) 
+0

我更新了我的答案,以解決'array_combine'問題。現在散列的意義相反:* page *是鍵,* url *是值。然後'array_intersect'會給出所需的輸出。 – trincot

+0

您有機會接受答案嗎? – trincot