2012-09-19 89 views
-6

是否有可能使用1个输入获取像这样的输出?避免php变量重写

<input name="value"/> 
$_POST['value'] = 1; 
$_POST['value'] = 2; 
$_POST['value'] = 3; 
$_POST['value'] = etc; 

编辑:我想通过一个单一的表单输入数组。

+0

你指的是具有多个输入相同的名称,并能够读取PHP中的所有结果?你不是很清楚。 –

+0

你的意思是隐藏的输入? – hjpotter92

+0

请更改您的问题 - 这并不明显,您需要/想要什么。 –

回答

0

你的问题有点不清楚,但如果你想用单一形式传递一个数组input简短的答案是否定的,使用单个元素不能将数组传递到POST数组(除了multi-select form element),但它很容易w ith 微小的一旦你提交处理。你只需要使用的价值分隔符,并在PHP爆炸是:

在HTML:

<input name="value" value="1|2|4|4|5" /> 

在PHP

$values = explode('|',$_POST['value']); 

这将导致:

$values[0] == 1; 
$values[1] == 2; 
... 

然而,从来没有办法让一个PHP数组有一个键的多个值在同一时间,这样你就可以永远不会有一个PHP数组,看起来像:

$_POST['value'] = 1; 
$_POST['value'] = 2; 
$_POST['value'] = 3; 
$_POST['value'] = etc; 

因为对于任何数组(_POST或其他方式)$数组[KEY]不能有两个值(即if ($_POST['value'] === $_POST['value'])怎么可能不是真的?它不能,更多的if ($x===$x)if (1===1)可以是假的)。你可以,但是,使用一个多维数组,这将是这样的:

$_POST['value'][0] = 1; 
$_POST['value'][1] = 2; 
$_POST['value'][2] = 3; 
$_POST['value'][3] = 'etc'; 

,然后通过与它的工作:

foreach($_POST['value'] as $key =>$value){ 
    echo $value.','; 
} 

这将输出

1,2,3,etc 
+0

您应该在html字段名称中添加有关数组表示法的信息。 :) –

+0

我*认为* OP对单个输入感兴趣 - >多个输出,而不仅仅是如何将数组传递给_POST数组。虽然这个问题不完全清楚 –

0

不,除非您一次存储一个值,也许使用ajax。

1

提交多输入名称相同,在这样

<input type="text" name="bob[]" /> 
<input type="text" name="bob[]" /> 
<input type="text" name="bob[]" /> 
<input type="text" name="bob[]" /> 
<input type="text" name="bob[]" /> 

在另一侧末端附加括号[]bob将是一个数组:

<?php 

$Bob = (isset($_POST['bob']) === TRUE ? $_POST['bob'] array()); 

echo 'RES:'. implode(',', $Bob); 

?> 
+1

+1我相信这正是OP的意思,尽管它的措辞很差。好答案! – alfasin

+0

谢谢你的支持者,但这不完全是我想要的,对我糟糕的措辞感到抱歉。 – Mat