problem mit return bei zweidimensionalem array

Bash, Shell, PHP, Python, Perl, CGI
dfmar
Posts: 57
Joined: 2002-12-29 17:53
Location: Marienroth - Oberfranken

problem mit return bei zweidimensionalem array

Post by dfmar »

ich hab eine function die sich immer wieder selbst aufruft. die abbruchbedingung funktioniert, bloß soll die function ein array zurück geben. aber die daten gehen beim verlassen der function verloren. bei einer anderen function gebe ich bloß ein eindimensionales array zurück, da funzt es.

mfg fitus
dfmar
Posts: 57
Joined: 2002-12-29 17:53
Location: Marienroth - Oberfranken

Re: problem mit return bei zweidimensionalem array

Post by dfmar »

hier mal mein ganzes skript

Code: Select all

<?php
  include("conf.php");
  
  $query = "SELECT * FROM it_groups WHERE parent_group = 0 ORDER BY sort ASC";
  
  $dbh = mysql_connect($MySQL_Host, $MySQL_User, $MySQL_Passw);
  mysql_select_db($MySQL_db, $dbh);
  
  $acount = 0;
  
  if ($query_id = mysql_query($query)) {
    while ($line = mysql_fetch_array($query_id)) {
      $acount++;
      
      $db_group[$acount]["id"] = 			$line["id"];
      $db_group[$acount]["parent_group"] =	$line["parent_group"];
      $db_group[$acount]["name"] = 			$line["name"];
      $db_group[$acount]["sort"] = 			$line["sort"];
      $db_group[$acount]["is_tutolist"] = 		$line["is_tutolist"];
    }
  }
  
  $new_array = array();
  
  $out_array = orderGroupArray($new_array, $db_group, 0);
  
  echo $out_array[0]["name"];
  for ($i=0; $i<sizeof($new_array); $i++) {
    echo $out_array[$i]["name"] . "<br>";
  }
//#################################################################################

function checkSubItems($id) {
  include("conf.php");
  
  $query = "SELECT COUNT(*) FROM it_groups WHERE parent_group = '$id'";
  
  $dbh = mysql_connect($MySQL_Host, $MySQL_User, $MySQL_Passw);
  
  $res = mysql_db_query($MySQL_db, $query);
  $sub_items = mysql_result($res, 0, "COUNT(*)");
  return ($sub_items);
}

//#################################################################################

function getSubItems($item_array, $id) {
  include("conf.php");
  
  $query = "SELECT * FROM it_groups WHERE parent_group = '$id' ORDER BY sort ASC";
  
  $dbh = mysql_connect($MySQL_Host, $MySQL_User, $MySQL_Passw);
  mysql_select_db($MySQL_db, $dbh);
  
  if ($query_id = mysql_query($query)) {
    while ($line = mysql_fetch_array($query_id)) {
      array_push($item_array,
	      array("id" => $line["id"],
	        "parent_group" => $line["parent_group"],
		"name" => $line["name"],
		"sort" => $line["sort"],
		"is_tutolist" => $line["is_tutolist"]
	      )
      );
    }
  }
  else {
    echo mysql_error();
    exit(1);
  }
  
  return $item_array;
}

//#################################################################################

function orderGroupArray($back_array, $source_array, $status) {
  $status++;
  
  array_push ($back_array,
	  array("id" => $source_array[$status]["id"],
	    "parent_group" => $source_array[$status]["parent_group"],
	    "name" => $source_array[$status]["name"],
	    "sort" => $source_array[$status]["sort"],
	    "is_tutolist" => $source_array[$status]["is_tutolist"]
	  )
  );
  
  if (checkSubItems($source_array[$status]["id"]) > 0) {
    $back_array = getSubItems($back_array, $source_array[$status]["id"]);
  }
  
  if ($status < sizeof($source_array)) {
    orderGroupArray($back_array, $source_array, $status);
  }
  elseif ($status >= sizeof($source_array)) {
    return ($back_array);
  }
}
?>
dfmar
Posts: 57
Joined: 2002-12-29 17:53
Location: Marienroth - Oberfranken

Re: problem mit return bei zweidimensionalem array

Post by dfmar »

Code: Select all

$back_array = getSubItems($back_array, $source_array[$status]["id"]); 
diese zeile versteh ich auch nicht wirklich. ich bin da durch zufall drauf gekommen. eigentlich müsste da das array nur noch den inhalt der function enthalten. dies ist aber nicht so. der inhalt der function wird hinten an das array angeängt. warum?
dfmar
Posts: 57
Joined: 2002-12-29 17:53
Location: Marienroth - Oberfranken

Re: problem mit return bei zweidimensionalem array

Post by dfmar »

fällt dazu keinem was ein?