Pentiums Posted March 29, 2009 Report Share Posted March 29, 2009 Kā no šiem te var izvilkt datumu padodot vārdu? http://paste.php.lv/2489210b35be6becf75cc8...657d14?lang=php Quote Link to comment Share on other sites More sharing options...
p4F Posted March 29, 2009 Report Share Posted March 29, 2009 $vd[date('m')][date('d')] Quote Link to comment Share on other sites More sharing options...
Pentiums Posted March 29, 2009 Author Report Share Posted March 29, 2009 Padodot vārdu :P Quote Link to comment Share on other sites More sharing options...
bubu Posted March 29, 2009 Report Share Posted March 29, 2009 Ejot cauri masīvam, protams: foreach ($vd as $month => $days) { foreach ($days as $day => $names) { if (in_array("vaards", $names)) { return "$month-$day"; } } } return null; Bet nu daudz prātīgāk būtu to iebāzt SQL datubāzē un tad ar vienu kveriju izselektēt. Vai arī, ja nu SQL datubāzi lietot ir tik ļoti ļoti neiespējami, tad glabāt tos visus vārdus vēl vienā masīvā - formā vārds => datums. Quote Link to comment Share on other sites More sharing options...
codez Posted March 29, 2009 Report Share Posted March 29, 2009 (edited) uztaisam int masīvu $mas, kur katrā elementā glabājas objekts ar parametriem 'vārds' un 'datums'. sakārtojam augošā secībā, pēc vārda. Uztaisam funkciju, kur salīdzina, kurš strings ir lielāks pēc alfabēta kārtības. Taisam bināro meklēšanu: Ja vārdu skaits ir 0..1024, tad: 1)izrēķinām vidējo k=(0+1024)/2=512; 2)tālāk salīdzinam $mas[k]->vards ar savu vajadzīgo vārdu, ja tavs vārds ir lielāks, tad jaunais intervāls ir 513..1024, ja mazāks, tad 0..511, ja vienāds, tad vārds atrasts. un beidzam meklēšanu. 3)Ja beigu robeža ir mazāka vai vienāda ar sākuma robežu, tad vārda nav, ja nē, tad atgriežamies pie 1) punkta ar jaunajām intervāla vērtībām. Edited March 29, 2009 by codez Quote Link to comment Share on other sites More sharing options...
bubu Posted March 29, 2009 Report Share Posted March 29, 2009 A jēga? php masīvi būs ātrāki - heštabula kā nekā. Quote Link to comment Share on other sites More sharing options...
Kaitnieks Posted March 30, 2009 Report Share Posted March 30, 2009 uztaisam int masīvu $mas, kur katrā elementā glabājas objekts ar parametriem 'vārds' un 'datums'.sakārtojam augošā secībā, pēc vārda. ... Taisam bināro meklēšanu: codez, es pieņemu, ka kolēģiem, kam jālabo un jāpapildina tevis rakstītās sistēmas ir ļoti interesanti... Quote Link to comment Share on other sites More sharing options...
bubu Posted March 30, 2009 Report Share Posted March 30, 2009 Kaitnieks: Tas jau nav nekas neparasts, ko codez iesaka - lietot bināro meklēšanu sakārtotā masīvā. Daudzās situācijās tas ir ļoti izdevīgi - nevajag būvēt nekādas papildus struktūras (binārus sakārtotus kokus), viss notiek tai pat masīvā. Šis paņēmiens ir ļoti populārs. Bet nu php gadījumā es gan tam jēgu nesaredzu. Quote Link to comment Share on other sites More sharing options...
codez Posted March 30, 2009 Report Share Posted March 30, 2009 bubu tainībā, pēdējā laikā risināju lielā daudzumā algoritmiskoss uzdevumu ar C++ palīdzību, tāpēc ātrumā sanāca nedaudz pa "krutu" risinājums, ja ir tā, kā saka bubu, ka PHP asociatīvais arrajs tiek veidots kā heštabula, tad protams šādi būs ātrāk. bubu, man neizdevās atrast pierādījumus, ka PHP asociatīvais arrajs tiek veidots kā heštabula, varbūt tev ir kāda norāde? Quote Link to comment Share on other sites More sharing options...
bubu Posted March 30, 2009 Report Share Posted March 30, 2009 Īsti nezinu vai tas kur tā ir uzrakstīts, bet esmu php sourcē skatījies. Tur ir heštabulas - zend_exectue.c failā zend_fetch_dimension_address fjā. Tur tiek izmantota zend_hash_next_index_insert fja, kas darbojas ar heštabulām (zend_hash.c/h faili). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.