未定义的偏移量:2(第22,28,29行)

时间:2015-04-22 16:52:05

标签: php mysql

以下代码显示错误

  

第22,28和29行的“未定义的偏移:2”

baz

3 个答案:

答案 0 :(得分:1)

我不确定您要实现的目标,但要让您的代码正常运行,请尝试以下方式:

$sql = "SELECT email FROM CommercialEmails WHERE dripid = 1 AND sent='a'";
$results = array();
$hey = array();
if ($resultsd1 = mysqli_query($conn, $sql )) {
    $affectedrows = mysqli_num_rows($resultsd1);
    while ($row = mysqli_fetch_row($resultsd1)){
        $results[] = $row;
        If(substr($row[0], -4) !== "com,"){ 
           $hey[] = $row[0];              
        }
    }
}

if (count($hey)==0){
    echo "There are no emails";
} else {
    foreach( $hey as  $value){
        echo $value;
    }
    echo $hey;
}

正如您所看到的,我完全删除了您不需要的许多变量,直到您能够解释目标为止。

我已经删除了你的奇怪条件if

if (substr($broken[$hi], -4) == "com," && $broken[$hi] == "qwert"){

    $hey[$hi] = $broken[$hi];
    $hello++;
}

因为没有$broken[$hi]的这个值可以等于'qwert'并且'com'作为子字符串在里面。所以这个编码总是错误的,我们可以删除它。

尝试解释你的目标。希望我能帮到你。

答案 1 :(得分:0)

这意味着$ broken数组没有3个元素(ofset index = 2)。

我看不到那个$ hi var被设置为2的位置,但它是代码中的某个地方你猜不出来。

答案 2 :(得分:0)

在while循环中,而不是global $results;,而在while循环开始之前,只需将$ results声明为空数组$results = array();

然后在while循环结束后执行print_r($results);以查看它是否包含您期望的内容。