我有一个带有输入的表单,可以通过单击按钮动态添加。设置这些输入的名称/ id以利用PHP中的数组(阅读此技巧),但我不喜欢这种方法,因为它感觉不对,因为我想这样做我最初的想法,但在我尝试时遇到了问题。我可以使用一些指导,因为我过度思考了这一点。这就是我现在所拥有的......
HTML
<input name="specs[1][number]" id="specs[1][number]" type="text" placeholder="Specs..." />
PHP
$specCounter = count($_POST[specs]);
for ($i = 1; $i <= $specCounter; $i++) {
echo '<li>' . $_POST[specs][$i][number] . '</li>';
};
正如你所看到的,它很直接;我有一个名为specs的数组,输入的值最终将被放入数字槽。
但我最初想要的是这样的:
HTML
<input name="specs1" id="specs1" type="text" placeholder="Specs..." />
<input name="specs2" id="specs2" type="text" placeholder="Specs..." />
我遇到的问题是在PHP中循环使用这些问题,因为我不知道如何计算这些输入...
PHP
var myTotal = 'total inputs that have specs in the name/id';
for (var i = 1; i < myTotal; i++) {
echo $_POST['specs' . i];
};
在撰写本文时,我突然意识到我可能应该探索正则表达式,但也许不是吗?任何帮助表示赞赏。
答案 0 :(得分:2)
$i = 1;
while(isset($_POST['specs'.$i]))
{
echo $_POST['specs'.$i];
$i++;
}
另外一种说法:
for($i=1; isset($_POST['specs'.$i]); $i++)
{
echo $_POST['specs'.$i];
}
无论您喜欢哪种
或者如果您的号码不连续:
foreach($_POST as $key => $value) {
if(substr($key) === 'specs') {
echo $value;
}
}
答案 1 :(得分:1)
可以这样做:
foreach($_POST as $key => $value) {
if(substr($key) === 'specs') {
echo $value;
}
}
答案 2 :(得分:0)
也许您想使用foreach
代替for
:
foreach($_POST[specs] as $spec) {
echo '<li>' . $spec['number'] . '</li>';
}
答案 3 :(得分:0)
通常首选使用数组的第一种方法。我会简化它:
<强> HTML 强>
<input name="specs[1]" type="text"..." />
<input name="specs[2]" type="text"..." />
<强> PHP 强>
foreach($_POST['specs'] as $key => $val) {
echo "specs $key is $val";
}
除非您需要它们,否则您甚至不必指定索引,它们将自动创建:
<input name="specs[]" type="text"..." />
<input name="specs[]" type="text"..." />