变量 to = 数组的特定部分


Variable to = specific parts of array

我有 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 上看到它。

我希望这些想法对您有所帮助和有用。