Looks like you may not redeclare functions generally.
Because the function tbl2array can't be any kind of scope,
the functions declared inside it will be globally declared.
I think the solution is to take the functions like compname()
out of tbl2array and declare them "really global".
On Thu, 19 Sep 2002 13:28:09 -0230
[EMAIL PROTECTED] (Robert Miller) wrote:
> Hello,
>
> My function to read a comma separated text file and return a sorted
>multi-dimensional array will not work if used more than once per page.
>
> I know why I'm having this problem. But, I don't know how to solve it. :-(
>
>
>
>
>
> Calling it Twice:
> $services = tbl2array ("../locations/service.txt", "default", $divdetail['id'], "0");
> $collections = tbl2array ("../download/collection.txt", "name", $divdetail['id'],
>"4");
>
>
> The Error:
> Fatal error: Cannot redeclare compname() in ../tbl2array.inc on line 35
>
>
> Function Table 2 Array:
> <?php
> function tbl2array ($table, $sortby = "default", $keyword = "all", $keyfield = "0") {
> $fpointer = fopen ($table,"r");
> $row = 1;
> $leaf = array();
> $heading = array();
> while ($data = fgetcsv ($fpointer,1000)) {
> if ($row == 1) {
> $heading = $data;
> }
> else {
> $count = 0;
> if ($keyword == "all") {
> foreach ($data as $value) {
> $leaf[$heading[$count]] = $value;
> $count++;
> }
> $result[] = $leaf;
> }
> elseif (($keyword != "all") && ($data[$keyfield] == $keyword)) {
> foreach ($data as $value) {
> $leaf[$heading[$count]] = $value;
> $count++;
> }
> $result[] = $leaf;
> }
> else {
> $count++;
> }
> }
> $row++;
> }
> fclose ($fpointer);
>
> function compname ($a, $b) {
> return strcmp ($a["name"], $b["name"]);
> }
>
> function comptitle ($a, $b) {
> return strcmp ($a["title"], $b["title"]);
> }
>
> function compcity ($a, $b) {
> return strcmp ($a["city"], $b["city"]);
> }
>
> function compdesc ($a, $b) {
> return strcmp ($a["description"], $b["description"]);
> }
>
> function compfile ($a, $b) {
> return strcmp ($a["filename"], $b["filename"]);
> }
>
> if ($sortby == "name") {
> usort ($result, "compname");
> }
> elseif ($sortby == "title") {
> usort ($result, "comptitle");
> }
> elseif ($sortby == "city") {
> usort ($result, "compcity");
> }
> elseif ($sortby == "description") {
> usort ($result, "compdesc");
> }
> elseif ($sortby == "filename") {
> usort ($result, "compfile");
> }
>
> return $result;
> }
> ?>
>
>
>
> ----------------------------------------------------------------------
> Robert J. Miller
> Internet Support Specialist
> Department of Government Services and Lands
> P.O. Box 8700, St. John's, NF., A1B-4J6
> (709) 729-4520 (phone)
> (709) 729-4151 (facsimile)
> (709) 778-8746 (pager)
>
> http://www.gov.nf.ca/gsl/
> mailto:[EMAIL PROTECTED]
> ----------------------------------------------------------------------
> Simple things should be simple and hard things
> should be possible.
> ----------------------------------------------------------------------
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php