将PHP数组发布到文件

时间:2011-05-02 16:18:25

标签: php arrays

你好我的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 */
 }

这没关系吗?

提前致谢, 尼尔

5 个答案:

答案 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) {      / *代码* / }