![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam tablice wygladającą w ten sposób: Kod <? $category=array ( '1_383' => array( 'name' => 'Anteny pokojowe', ), '1_540' => array( 'name' => 'Baterie, akumulatory, ładowarki', 'elements' => array ( '540_519' => 'Akumulatory', '540_520' => 'Baterie', '540_522' => 'Ładowarki akumulatorowe', ), ), '1_531' => array( 'name' => 'Car Audio-Video', 'elements' => array ( '531_375' => 'Gło¶niki samochodowe - do zabudowy', '531_376' => 'Gło¶niki samochodowe - kolumny', '531_382' => 'Samochodowe Akcesoria', '531_379' => 'Samochodowe radioodtwarzacze', '531_380' => 'Samochodowe radioodtwarzacze Video', '531_381' => 'Samochodowe wzmacniacze', ), ), ); w tablicy tej występuje ponad 600 różnych pól. Zastanawioam sie, czy można jakoś przyspieszyc operacje na tej tablicy. Głównie korzystam z foreach() i dalej różne warunki.. Slyszalem, że można zrobic cache tej tablicy w pamięci serwera.. Tablica ta jest praktycznie cały czas niezmienna.. cały czas to samo.. prosze o podpowiedź. Bede bardzo wdzięczny za wszelką pomoc. Ten post edytował kukix 20.03.2008, 23:49:13 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Dzieki chłopaki za odpowiedzi.
No wlaśnie to jest już tablica, którą includuje. Dane pobieram z bazy sql przerabiam dużym skryptem igeneruje taką tablice, zapisuje ją do pliku. Skoro foreach laduje jeszcze raz do pamięci to moze wykorzystac do tego " while (list($item,$key) = each($elements)) { }" ? Jeżeli chodzi o serialize i unserialize to nie rozumie do końca działania tej funkcji. Domyslam sie , że serialize ładuje do pamięci a unserialize czysci pamiec. Tylko to chyba nie o to chodzi. Operacja na tablicy jest przy każdym wywołaniu strony wykonywana tylko raz. tak więc nie ma sensu robic serialize i unserialize jak skrypt tylko raz wykonuje operaxcje na skrypcie. Chodzi mi bardziej o cos takiego jak jest przy sql'u. tzn żeby serwer trzymał tablice w pamieci dla nastepnego wykonania skryptu. chociaż teraz tak sobie mysle, że to raczej niemozliwe. oto moj kod pracujący na tej tablicy: Kod function gen_menu($param_zakladka='', $param_kategoria='') { $kod_html=''; include('include/kategorie.php'); $q=0; if (is_array(@$category)) { reset($category); foreach ($category as $id=>$n_category){ $name=$n_category['name']; $elements=@$n_category['elements']; if (!empty($param_zakladka)) { if (!empty($param_kategoria)) { //wyświetlamy tylko z tej kategorii i zakladki $param = $param_zakladka.'_'.$param_kategoria; if ($id == $param) { print ($name.'<br>'); ////f (is_array(@$elements)) { narazie tak // gen_submenu($elements,1); //} } } else { //wyswietlamy tylko z tej zakladki $param = $param_zakladka.'_'; if (strpos($id, $param) !== false) { //print ($name.'<br>'); $q++;//potrzebne do kodu html $kod_html .= gen_menu_html($param_zakladka,$id,$name,$param_kategoria,$q); } } } else { //wyswietlamy wszystkie if (!empty($param_kategoria)) { //wyświetlamy tylko z tej kategorii $param = '_'.$param_kategoria; if (strpos($id, $param) !== false) { // print ($name.'<br>');narazie // if (is_array(@$elements)) { // gen_submenu($elements,1); //} } } else { //print ($name.'<br>'); // if (is_array(@$elements)) {//narazie // gen_submenu($elements,1); // } } } } } return $kod_html; } function gen_submenu($elements=array(),$level) { while (list($item,$key) = each($elements)) { if (is_array($item)) { // dany element jest drzewem $id=key($item); $name=$item[$id]['name']; $new_elements=$item[$id]['elements']; $level++; $name=addslashes($name); gen_submenu($new_elements,$level); $level--; } else { // dany element jest lisciem $kat_name=$key; $kat_id=$item; //print('<font color="red"> '.$kat_name.' </font><BR>'); $id=$item; } } // end while return(0); } dzieki wielkie za odpowiedzi. Ten post edytował kukix 21.03.2008, 19:33:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 08:26 |