你好我的PHP是好的,但有一件事我从来没有得到阵列,但我知道它们是多么方便,这就是为什么我要使用它们。 这是我的问题:
我的表格是:
while($row = mysql_fetch_array($result)){
echo "<INPUT TYPE=CHECKBOX"." "."name"."="."\"to[]\""." "."value=\""."0".$row['cnumber']."\" >".$row['cname']."<br>"."<br>";
} ?>
首先这样可以吗?是“到[]”正确的方法吗?
好的,然后将其发布到另一页:
$to = $_POST['to'][];
现在的问题是,当我检查它时:
if (empty($to) {
header ("Location: /sms_error.php");
}
它说空了并转到sms_error.php
最后,如果您感兴趣,这就是我对数组所做的事情:
foreach ($to as $to) {
/* code */
}
这没关系吗?
提前致谢, 尼尔
答案 0 :(得分:1)
替换
$to = $_POST['to'][];
带
$to = $_POST['to'];
答案 1 :(得分:1)
PHP非常好documentation of arrays。另外Variables From External Sources可能值得一读。
现在逐步解决您的问题:
您创建HTML的方式非常不清楚。有太多不必要的字符串连接。最好不要echo
HTML,而是将PHP嵌入HTML:
<?php while(($row = mysql_fetch_array($result))): ?>
<input type="checkbox" name="to[]" value="0<?php echo $row['cnumber']; ?>">
<?php echo $row['cname']; ?>
<br>
<br>
<?php endwhile; ?>
很可能是你在原始代码中引用了一些错误。
如果正确创建HTML,则$_POST['to']
将包含一组值。您可以使用empty($_POST['to'])
检查数组是否为空。
如果要将数组分配给变量,请执行:
$to = $_POST['to'];
您在循环结束后,您的$to
循环中覆盖foreach
,这意味着在下一次迭代中,$to
不再指向数组,而是指向数组的第一个条目数组。foreach
循环将覆盖数组。 $to
将指向数组的最后一个元素。这使您的代码非常混乱。最好使用另一个变量名:
foreach($to as $value) {
}
答案 2 :(得分:0)
除了将$to = $_POST['to'][];
更改为$to = $_POST['to'];
之外,请将(empty($to) {
更改为if (empty($to)) {
答案 3 :(得分:0)
您可能使用的是php 5或更新版本...
自PHP 5起,empty不会给你正确的结果。相反,你必须使用isset()。
例如:isset($ to)
答案 4 :(得分:0)
您可能有许多具有不同名称的输入元素?
如果是这样,你可以在外面设置$ i = 0,然后在你的while循环中,你可以将“\”设置为$ i \“”。在循环结束时,不要忘记$ i ++。
然后$ to = $ _POST; foreach($ to $ value) { / *代码* / }