为什么我在这个PHP代码中收到通知字符串偏移量?

时间:2013-12-27 06:52:34

标签: php

我正在为电子邮件编写代码。

enter code here:-

 <?php 
if (isset($_POST['submit']))
{
   if(!empty($_POST['sendto'])) {
foreach($_POST['sendto'] as $check) {
     echo $check[0]; // error :Notice: Uninitialized string offset: 1 in C:\xampp\htdocs\smart_class_Ctr\email.php on line 15
     echo "<br>";  
     echo $check[1];            
     }

    }
}

&GT;

 <form method='post' action=''>

Subject: <input name='subject' type='text' /><br/>
Message:<br/>
<textarea name='message' rows='15' cols='40'>
</textarea><br />

<input type="checkbox" name="sendto[]" value="1" />Student
<input type="checkbox" name="sendto[]" value="2" />Staff

<input type='submit' value="submit" name="submit" />

为什么会发生这种情况(或者为什么会产生无限循环)的任何帮助都将不胜感激!

请建议我如何解决这个问题。

谢谢:)

4 个答案:

答案 0 :(得分:1)

因为 $ check不是数组

使用它:

if (isset($_POST['submit']))
{
   if(!empty($_POST['sendto'])) {
       foreach($_POST['sendto'] as $check) {
          echo $check; //now you see values
          echo "<br>";  
       }
    }
}

如果您想获得发布的第一个值,请使用:

$_POST['sendto'][0]

答案 1 :(得分:1)

您可以使用print_r($_POST);查看$_POST超全局数组的全部内容。那会帮助你看到你出错的地方。这是一个例子:

Array
(
    [subject] => Subject
    [message] => Some sample message.
    [sendto] => Array
        (
            [0] => 1
        )

    [submit] => submit
)

您正在使用foreach循环来遍历$_POST['sendto']foreach自动获取数组值,因此您无需指定数组索引。换句话说,$check不是数组,它是值本身。所以你要改为:

foreach($_POST['sendto'] as $check) {
    echo $check;
}

答案 2 :(得分:1)

尝试echo $check; NOT echo $check[0];

答案 3 :(得分:0)

而不是:

echo $check[0];

使用以下代码:

echo $check;

如果你想要键和值两者,那么使用:

foreach($_POST['sendto'] as $key => $check) {
   echo $key." = ".$check;
}

这里$ key将具有index的值。