0

I have changed version of this recursive function... http://www.phpbuilder.com/articles/databases/mysql/handling-hierarchical-data-in-mysql-and-php.html

What I need is a way to save the returned value of this function in an array so that I can reverse the order of array elements. The function works well for me, but I need a way to save values. Here is the code...

function display_children($category_id, $level) {
  global $database;
  $result = mysql_query("SELECT * FROM parents WHERE id_roditelja='$category_id'") or die(mysql_error());
  $niz = array();
  while ($row = mysql_fetch_array($result)) {
    echo str_repeat('  ', $level) . $row['naziv'] . "<br/>";
    array_push($niz, display_children($row['parent_id'], $level + 1));
//this is one way I tried, and I get $niz with exact number of elements but each is null
//in this $niz array I need to store values of recursion
    var_dump($niz);
  }
}
3

1 Answer 1

2

I think you want this:

function display_children/* <- this must be the same */($category_id, $level) {
  global $database;
  $result = mysql_query("SELECT * FROM parents WHERE id_roditelja='$category_id'") or     die(mysql_error());
  $niz = array();
  while ($row = mysql_fetch_array($result)) {
    $niz[] = str_repeat('  ', $level) . $row['naziv'] . "<br/>"; // we need to save this
    $niz = array_merge($niz, /* as this -> */display_children($row['parent_id'], $level + 1)); // array_merge doesn't take a reference so we need to store its result in $niz
  }
  return $niz;
}

if you want a tree like structure use array_push instead of array_merge. As noone seems to notice: His function can't return anything without a return statement !

Sign up to request clarification or add additional context in comments.

15 Comments

As maybe we have already noticed that, but in comments, because one more row, does not deserve a whole answer :)
Same result as my way...null again. My function returns names of products, as it should, but i need it saved in array, because order of elements in not the right.
@Thug your function (how you posted it) may display something but it won't return anything because it lacks a return statement ! Can you post how you call your function and an example output ?
This is example od output Zaštita za zube Borilački aksesoari Borilački sportovi Sportska oprema array 0 => null array 0 => null array 0 => null array 0 => null
i call function like display_chield(58,4);
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.