我有 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....
更新***
$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 : '';
}
当我回显$checks时,它只是说数组..不显示任何已检查的数字名称。
如果您尝试动态读取值,则可以使用已有的名称构造键值:
$num_a = 1;
$num_b = 6;
$CH1 = checks['ck' . $num_a] - checks['ck' . $num_b];
希望使用array_slice:
$CH1 = array_slice($checks, 0, 6);
现在 $CH 1 将是一个仅包含前 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>";
}
您还可以根据条件筛选数组。假设您要从 $checks 数组中消除空元素:
$filtered = array_filter($checks, function ($chk) { return !empty($chk); });
。现在输出过滤后的数组,每个条目都在单独的行上:
echo implode('<br>', $filtered);
最后,您可以使用 array_intersect_key
仅从 $vars 数组中取出那些已检查的元素,如下所示:
$result = array_intersect_key($vars, array_flip($_POST['ck']));
因此,如果用户选择了值为 1、5 和 10 的复选框,则$results数组将如下所示:
array (
1 => 'Desktop',
5 => 'Desk Phone',
20 => 'Google Docs',
)
在 eval.in 上看到它。
我希望这些想法对您有所帮助和有用。