scapegoat17
scapegoat17

Reputation: 5821

php undefined offset 150 error in for loop

I keep getting an undefined offset 150 error, but i am not sure what it means or what i should do to debug it. Do to the error line i believe that it has something to do with my for loop.

// Get Datafile
$MyData = file("./tmp/test.txt");
// Get Column Headers

$ColHeads = explode("   ", $MyData[1]);

unset($MyData[1]);
$LastHeader = "";
for ($i = 0;$i <= count($ColHeads);$i++) {
    if ($ColHeads[$i] == $LastHeader) { //<---this is the line that errors
        $ColHeads[$i] = $ColHeads[$i] . "1";
    }
    $LastHeader = $ColHeads[$i];
}

Would anyone have any ideas as to where I am going wrong?

and the error is:

Undefined offset: 150

I am sorry if this is vague. I am not familiar with php and not sure where to start on debugging this... any help would be much appreciated! Thank you!

Upvotes: 0

Views: 130

Answers (2)

Sabuj Hassan
Sabuj Hassan

Reputation: 39375

Array index starts from zero. And ends at Length-1. So it should be:

for ($i = 0;$i < count($ColHeads);$i++) {

Upvotes: 2

Surreal Dreams
Surreal Dreams

Reputation: 26380

Change your for loop:

for ($i = 0;$i < count($ColHeads);$i++) {

The problem is that on the last iteration of the loop, when $i == count($ColHeads), that's going to set $i too high for the number of items in $ColHeads.

You started off right by setting $i = 0. If $ColHeads has 5 items in it, those items have indexes from 0 to 4. Your for loop, as it is, goes up to 5 - and there is no $Colheads[5], so the error is thrown.

Upvotes: 2

Related Questions