Page 1 of 1

problem mit return bei zweidimensionalem array

Posted: 2003-12-26 13:14
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

Re: problem mit return bei zweidimensionalem array

Posted: 2003-12-26 13:43
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);
  }
}
?>

Re: problem mit return bei zweidimensionalem array

Posted: 2003-12-26 19:27
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?

Re: problem mit return bei zweidimensionalem array

Posted: 2003-12-27 13:35
by dfmar
fällt dazu keinem was ein?