2016-04-25 53 views
0

我有36個複選框......我用這個叫他們。 這樣標記。變量= =數組的特定部分

<input type='checkbox' value='1' name='ck[]'> 

這樣調用

$checks = $_POST['ck'] 
$vars = array(
       'ck1' => 'Demo', 
       'ck2' => 'Demo2', 
       'ck3' => 'Demo3', 
       'ck4' => 'Demo4', 
       'ck5' => 'Demo5', 
       'ck6' => 'Demo6', 
       'ck7' => 'Demo7', 
       'ck8' => 'Demo8', 
       'ck9' => 'Demo9', 
       'ck10' => 'Demo10', 

       ); 


      foreach($vars as $key=>$default) { 
       $checks[$key] = !empty($checks[$key]) ? $default : ''; 
      } 

我現在如何才能使其中2個新的變量=從該職位的細節。 例如,

$CH1 = checks[1] - checks[6]; 
$ch2 = checks[6] - checks[10]; 

然後,

我怎麼能做出是否有$CH1號將列出,並打破它在那裏..這樣

$checks[1] . '<br>' . $checks[2] and so on.... 

UPDATE ***

$vars = array(
       '1' => 'Desktop', 
       '2' => 'Laptop Only', 
       '3' => 'Laptop/Dock', 
       '4' => 'Laptop Case', 
       '5' => 'Desk Phone', 
       '6' => 'Monitor', 
       '7' => 'Printer Access', 
       '8' => 'Printer - Personal', 
       '9' => 'Email(phone)', 
       '10' => 'Office 365', 
       '11' => 'Sharepoint', 
       '12' => 'Fax Fwd', 
       '13' => 'Adobe DC', 
       '14' => 'Apacheta', 
       '15' => 'Brightree', 
       '16' => 'TeamDME', 
       '17' => 'DirectView', 
       '18' => 'RingCentral', 
       '19' => 'Faxage', 
       '20' => 'Google Docs', 
       '21' => 'Badge Access', 
       '22' => 'Title Plate', 
       '23' => 'Bis Cards', 
       '24' => 'Travel', 
       '25' => 'Exp Reports', 
       '26' => 'Order Pads', 
       '27' => 'Demo Trilogy', 
       '28' => 'Stickers', 
       '29' => 'APS', 
       '30' => 'CBSS', 
       '31' => 'Conexis', 
       '32' => 'Evenfy', 
       '33' => 'Inventory', 
       '34' => 'AMEX', 
       '35' => 'Fuel Card', 
       '36' => 'Vehicle' 
       ); 


      foreach($vars as $key=>$default) { 
       $checks[$key] = !empty($checks[$key]) ? $default : ''; 
      } 

當我回顯$檢查,它只是說數組.. ..不顯示任何n名單被檢查。

+0

你不能使用'print_r($ checks)'或'var_dump($ checks)'來回顯數組。 – Barmar

回答

2

如果你想dinamically讀取的值,就可以構造一個名爲鍵值你已經有:

$num_a = 1; 
$num_b = 6; 

$CH1 = checks['ck' . $num_a] - checks['ck' . $num_b]; 
+0

- 通過我的PHP手段?我只是以此爲例 – KevinM1990112qwq

+0

此代碼無效。 – trincot

+0

@ KevinM1990112qwq我剛剛複製你試圖做的事情。關鍵是您可以即時構建陣列的按鍵。 – SanF

0

您可能需要使用array_slice

$CH1 = array_slice($checks, 0, 6); 

現在$ CH1將只是前6次檢查的陣列。要獲得下一個10(例如):

$CH2 = array_slice($checks, 6, 10); 

...等等。

然後你就可以循環通過他們,就像你將與另一個數組做:

foreach($CH1 as $chk) { 
    // 
} 

如果你想檢查是否有這些的是數字,使用is_numeric

foreach($CH1 as $chk) { 
    if (is_numeric($chk)) echo $chk . "<br>"; 
} 

你可以過濾器基於條件的數組。比方說,你想消除來自$檢查陣列的空元素:

$filtered = array_filter($checks, function ($chk) { return !empty($chk); }); 

...現在輸出濾波陣列與一個獨立的行中的每個條目:

echo implode('<br>', $filtered); 

最後,你可以使用array_intersect_key拿出你$瓦爾陣列只有那些被選中的元素,具體如下:

$result = array_intersect_key($vars, array_flip($_POST['ck'])); 

因此,如果用戶已經選擇複選框值爲1,5和10,$結果陣列看起來像這樣:

array (
    1 => 'Desktop', 
    5 => 'Desk Phone', 
    20 => 'Google Docs', 
) 

請參閱eval.in

我希望這些想法對你有所幫助和用處。

+0

你可以看看我的更新....現在我不知道發生了什麼事。 – KevinM1990112qwq

+0

當你迴應一個數組時,這就是你所得到的。相反,'回聲implode(',',$檢查);'...這不會是你所需要的,但更接近。 – trincot

+0

當我這樣做,我剛剛得到了很多「,」 – KevinM1990112qwq