Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zasięg zmiennych w funkcjach zagnieżdżonych (proste drzewko kategorii)
zephyr7
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.11.2005

Ostrzeżenie: (0%)
-----


Napisałem bardzo prostą funkcję tworzącą drzewko kategorii.
Niestety, korzysta ona z 2 zmiennych globalnych (poniżej) $n i tablicy wyników.

Czy da się te zmienne jakoś wsadzić w zagnieżdżoną funkcję, żeby uniknąć korzystania z globali?


  1. //gets and sorts by nesting
  2. function get_categories($table, $id,$level,$user_id){
  3. [b]global $n,$results_array;[/b]
  4.  
  5. $query=$this->db->query("SELECT * FROM ".$table." WHERE user_id=".$user_id." and parent_id=".$id);
  6.  
  7. foreach ($query->result_array() as $row)
  8. {
  9. $n++;
  10. //$results_array[$n][$level]=$row["name"];
  11. $results_array[$table][$n]["name"]=$row["name"];
  12. $results_array[$table][$n]["id"]=$row["id"];
  13. $results_array[$table][$n]["parent"]=$row["parent_id"];
  14. $results_array[$table][$n]["level"]=$level;
  15.  
  16. echo $row['name'];
  17. $this->get_categories($table,$row["id"],$level+1,$user_id);
  18. }
  19. return $results_array;
  20.  
  21.  
  22. }


Ten post edytował zephyr7 30.07.2011, 16:48:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Helid
post
Post #2





Grupa: Zarejestrowani
Postów: 280
Pomógł: 20
Dołączył: 12.12.2007
Skąd: 127.0.0.1

Ostrzeżenie: (0%)
-----


  1. public function categories($parent = 0, $categories = array(), $depth = 0)
  2. {
  3. global $categories;
  4. ++$depth;
  5. foreach(DB::select('*')->from('categories')->where('parent', '=', $parent)->execute() as $item)
  6. {
  7. $name = '';
  8. for($x = 2; $x <= $depth; $x++)
  9. {
  10. $name .= '----';
  11. }
  12. $name .= ' '.$item['name'];
  13. $categories[] = array($item['id'] => $name);
  14. $this->categories($item['id'], $categories, $depth);
  15. }
  16. return $categories;
  17. }

Osobiście robię to w ten sposób. Wydaje mi się że przynajmniej jedna zmienna musi być globalna.

Ten post edytował Helid 31.07.2011, 11:56:34
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 04:52