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?