Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I am learning PHP and have been agonizing over how to write my code properly. I have a textarea that accepts user input which is several lines of coordinates (PT# Northing Easting) separated by spaces.

I have the form pass the textarea input to a php script to handle it.

I can get a foreach loop to do exactly what I want but only local to the foreach loop, the variables do not get passed to the outside of the loop.

I know this is a global variable scope issue, for the life of me I can't resolve this...

Below is my PHP code, I left out the HTML form I have no issues with it and know the textarea is being passed properly.

**Sample data that I am inputing:
1 728258.24000 774337.29700
2 728232.15735 774277.54650
3 728326.39614 774216.82428**

<?php

$i = 0;
$j = 0;

//The code below explodes my textarea into a string array
//of separated lines.
$textArea = explode("\r", $_POST['textArea']);
$textNum = array();

//The code below works internally, but the values remain here
//I wanted to get them to the variables below so I can do work
//to them.
foreach ($textArea as $textRows) {

    //The code below explode the lines into elements separated by a space
    $textRow = explode(" ", $textRows);
    foreach ($textRow as $textItem) {
    $textNum[i][j] = $textItem;

    //The code below works within a local context
    echo "(" . $i . " " . $j . ")" . $textNum[i][j] . "</br>";
    $j++;
    }
    $i++;
    $j = 0;
}

//The code below is not receiving values from the foreach loop
//I know this has something to do with the variable scope
//I must be way off in my approach any help would be appreciated!
echo "</br>";
echo "</br> 0 0 " . $textNum[0][0];
echo "</br> 0 1 " . $textNum[0][1];
echo "</br> 0 2 " . $textNum[0][2];
echo "</br> 1 0 " . $textNum[1][0];
echo "</br> 1 1 " . $textNum[1][1];
echo "</br> 1 2 " . $textNum[1][2];
echo "</br> 2 0 " . $textNum[2][0];
echo "</br> 2 1 " . $textNum[2][1];
echo "</br> 2 2 " . $textNum[2][2];
echo "</br> 3 0 " . $textNum[3][0];
echo "</br> 3 1 " . $textNum[3][1];
echo "</br> 3 2 " . $textNum[3][2];
?>

I hope I have explained this well enough, and appreciate any help I can get! Thanks!

share|improve this question
add comment

2 Answers

up vote 0 down vote accepted

You, need to prepend $ before your variables, i.e $textNum[$i][$j] instead of $textNum[i][j], also, it's best to initialize $i and $j and set them to 0 before the foreach loop.

share|improve this answer
 
Thanks, I knew I was spinning my wheels unnecessarily... that was a silly error... –  sean2me Jul 2 '12 at 19:25
add comment

There is an error in your second loop:

$textNum[i][j] = $textItem;

have to be:

$textNum[$i][$j] = $textItem;
share|improve this answer
 
Oh boy... sorry, I couldn't see the forest for the tree's. –  sean2me Jul 2 '12 at 19:24
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.