我正在为我使用的另一个程序构建一个模板,并花了很多时间试图解决这个问题。
我有使用
提取数据的HTML复选框selection[]
正如名字一样。
基本上,输入数据形成一个数组,其中包括两次。这个数字需要是动态的,但按顺序列出...... 1,2,3等。
示例输入列表类似于
This is $number example and $number is cool.
This $number is great but $number is better.
正确的输出是:
This is 1 example and 1 is cool.
This 2 is great but 2 is better.
我发现的每个解决方案都要求数字是静态的,例如爆炸数字列表并使用......
$numbers = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15";
$numex = explode(" ", $numbers);
echo $number[0];
但由于每个选择都不同,每次选择不同的复选框,我都需要PHP以某种方式动态插入数字。
这可能吗?我正在疯狂地试图解决这个问题。
更新
以下是输入样本:
$game1 = "C:\\Program Files (x86)\\games\\1\\template\\1";
$game2 = "C:\\Program Files (x86)\\games\\2\\template\\2";
$game3 = "C:\\Program Files (x86)\\games\\3\\template\\3";
$game4 = "C:\\Program Files (x86)\\games\\4\\template\\4";
现在,在“1,2,3,4”的位置,我需要在提交表单后自动插入这些数字。例如,如果只是
$game3
$game4
选择后,输出将为:
$game3 = "C:\\Program Files (x86)\\games\\1\\template\\1";
$game4 = "C:\\Program Files (x86)\\games\\2\\template\\2";
这更有意义吗?
感谢您的时间。
答案 0 :(得分:2)
不要使用这样的变量。每当您发现自己创建编号变量(如$game1
,$game2
等)时,您应该使用数组:$game1
为$games[0]
,$game2
为{{ 1}},等等。
提供选择数组索引的输入值。然后你可以循环输入。
$games[1]
然后你可以像这样处理它们:
Option 1 <input type="checkbox" name="selection[]" value="0,CSGO">
Option 2 <input type="checkbox" name="selection[]" value="1,DOTA">
Option 3 <input type="checkbox" name="selection[]" value="2,BLAH">
Option 4 <input type="checkbox" name="selection[]" value="3,XXXX">
...
因此,如果用户检查选项3和4,则数组将为:
$games = array();
$names = array();
foreach ($_POST['selection'] as $index => $value) {
list($number, $name) = explode(',', $value);
$gamenum = $index + 1;
$games[$number] = "C:\\Program Files (x86)\\games\\$gamenum\\template\\$gamenum";
$names[] = $name;
}
然后,您可以将$games = array(
2 => "C:\\Program Files (x86)\\games\\1\\template\\1",
3 => "C:\\Program Files (x86)\\games\\2\\template\\2"
)
$names = array("BLAH", "XXXX");
转换为以逗号分隔的列表:
$names