Justice
Justice

Reputation: 179

PHP array not extracting as expected - why is this?

When using an array in a foreach loop

$stdlist = rtrim(trim($_POST['stdlist'], '/'), '/');
$stdlist = explode('/' , $stdlist);
print_r($stdlist);
foreach($stdlist as $value)
{
    echo "<br>";
    echo $_POST[$value];
}

the array $stdlist is clearly working; when printed this returns:

Array ( [0] => 1 [1] => 6 [2] => 7 [3] => 8 )

My problem is that when I use the foreach loop to extract out of the array one value at a time, the following gets printed to the page:

4
4
Notice: Undefined offset: 7 in C:\Program Files\wamp\www...on line 35
Notice: Undefined offset: 7 in C:\Program Files\wamp\www...on line 35

I know this isn't functioning as intended as I am expecting the following:

1
6
7
8

Could somebody please explain why this is happening and how to fix this issue? Thanks :-)

Upvotes: 0

Views: 88

Answers (4)

Tor Andre Haugdahl
Tor Andre Haugdahl

Reputation: 1

When using the foreach() loop, I'd recommend assigning both the position and value to their own respective variables and then print them to the screen to see how the foreach loop has assigned the values.

foreach( $stdlist as $position => $value ) {
   echo "The current position is $position, and the value of \$stdlist[$position] is
   $value";
}

Upvotes: 0

Tiago
Tiago

Reputation: 383

foreach($stdlist as $value)
{
  echo "<br>";
  echo $value;
}

when you use foreach the $value is not the position in the array, if you want to use the position you need to do

for($pos=0; $pos<sizeof($stdlist); $pos++)
{
  echo "<br>";
  echo $stdlist[$pos];
}

Upvotes: 0

instead of using echo $_POST[$value]; just use echo $value when you use foreach loop for an array, the values on each nodes are automatically extracted.

foreach ($array as $index=>$value){
   echo "index is $index and value associated with it is $value.";
}

Hope this helps.

Upvotes: 0

Jahanzeb
Jahanzeb

Reputation: 613

You have to print the $value bacause $value have original array value not index. And you are getting array in $stdlist from exploding this post variable $_POST['stdlist'].

foreach($stdlist as $value)
{
  echo "<br>";
  echo $value;
}

Now you will get your required result.

Upvotes: 3

Related Questions