检索后数组值
Posted
技术标签:
【中文标题】检索后数组值【英文标题】:Retrieve post array values 【发布时间】:2014-03-12 02:37:26 【问题描述】:我有一个使用 jQuery .serialize()
发送所有数据的表单,表单中有四个 arrays qty[], etc
,它将表单数据发送到 sendMail 页面,我想从数组中取回发布的数据。
我试过了:
$qty = $_POST['qty[]'];
foreach($qty as $value)
$qtyOut = $value . "<br>";
并尝试了这个:
for($q=0;$q<=$qty;$q++)
$qtyOut = $q . "<br>";
这是正确的方法吗?
【问题讨论】:
试试$qty = $_POST['qty'];
【参考方案1】:
您的$_POST
变量中有[]
- 这些不是必需的。你应该使用:
$qty = $_POST['qty'];
您的代码将是:
$qty = $_POST['qty'];
foreach($qty as $value)
$qtyOut = $value . "<br>";
【讨论】:
【参考方案2】:php 会自动检测 $_POST 和 $_GET 数组,因此您可以判断:
<form method="post">
<input value="user1" name="qty[]" type="checkbox">
<input value="user2" name="qty[]" type="checkbox">
<input type="submit">
</form>
<?php
$qty = $_POST['qty'];
和 $qty 将由 php-Array 组成。现在您可以通过以下方式访问它:
if (is_array($qty))
for ($i=0;$i<size($qty);$i++)
print ($qty[$i]);
?>
如果您不确定接收到的数据结构的格式可以使用:
print_r($_POST['qty']);
甚至
print_r($_POST);
看看它是如何存储的。
【讨论】:
没错。值得注意的是:不要忘记 html 中输入名称中的 [ ]。我忘记了这个,浪费了我的生命。 您的答案非常适合多阵列。例如,我将发布姓名和年龄,因为我可以同时获得这两个值。 要添加到这一点,通过在括号之间设置实际值而不是将它们留空并通过此 foreach (array_expression as $key => $value) 解析返回的数组 foreach 循环,您可以保留 id。在处理多个页面时很有用【参考方案3】:我的 PHP 4.4.4 版本抛出错误: 致命错误:调用未定义函数:size()
我将 size 更改为 count,然后例程正确运行。
<?php
$qty = $_POST['qty'];
if (is_array($qty))
for ($i=0;$i<count($qty);$i++)
print ($qty[$i]);
?>
【讨论】:
【参考方案4】:尝试将 filter_input() 与过滤器 FILTER_SANITIZE_SPECIAL_CHARS 和 FILTER_REQUIRE_ARRAY 一起使用,如图所示
$qty=filter_input(INPUT_POST, 'qty',FILTER_SANITIZE_SPECIAL_CHARS,FILTER_REQUIRE_ARRAY);
然后你可以很好地遍历它
foreach($qty as $key=>$value)
echo $value . "<br>";
【讨论】:
【参考方案5】:PHP 很好地处理嵌套数组
尝试:
foreach($_POST['qty'] as $qty)
echo $qty
【讨论】:
【参考方案6】:我更喜欢 foreach insted for,因为你不需要处理大小。
if( isset( $_POST['qty'] ) )
$qty = $_POST ['qty'] ;
if( is_array( $qty ) )
foreach ( $qty as $key => $value )
print( $value );
【讨论】:
以上是关于检索后数组值的主要内容,如果未能解决你的问题,请参考以下文章