Bobi92 Posted March 19, 2014 Report Share Posted March 19, 2014 Potrebna mi je pomoc za izvlacenje minimalne i maksimalne vrednosti u nizu, ali ne ovako: $arr_brojevi=array("10", "20", "30", "40", "50"); echo max($arr_brojevi); Treba da odradim malo slozenije, i postupno... Link to comment Share on other sites More sharing options...
Chegevara Posted March 21, 2014 Report Share Posted March 21, 2014 Dobro došao na DZ. :) <?php // inicijalizacija niza $arr_brojevi = array(10, 1, 5, 20, 18, 30, 65, 40, 50); // pretpostavka da su i najmanji i najveci broj prvi element niza $min_broj = intval($arr_brojevi[0]); $max_broj = $min_broj; // petlja u kojoj provjeravas svaki element niza foreach ($arr_brojevi as $broj) { // prevencija u slucaju da je neki od elemenata niza string a ne broj // kako si naveo u postavci zadatka "10", "20", "30", ... $broj = intval($broj); // ako je tekuci broj (element niza) manji od trenutno najmanjeg, zapamti ga kao trenutno najmanji if ($broj < $min_broj) { $min_broj = $broj; } // ili ako je veci od trenutno najveceg, zapamti ga kao trenutno najveci elseif ($broj > $max_broj) { $max_broj = $broj; } } // prikazi rezultat echo "Najmanji broj u nizu je {$min_broj}, a najveci je {$max_broj}."; Ovo je moguće razraditi još malo na način da prikažeš grešku u slučaju da zadati niz ne sadrži brojeve ili je prazan, i eventualno prilagoditi kod za neku svoju min/max funkciju. Link to comment Share on other sites More sharing options...
Bobi92 Posted March 21, 2014 Author Report Share Posted March 21, 2014 Hvala za odgovor... Ovo mi je bas trebalo... :D :D Link to comment Share on other sites More sharing options...
Bobi92 Posted March 26, 2014 Author Report Share Posted March 26, 2014 Zadatak mi nije potpun, Trebam ovako da uradim: function max_value() { } max_value(); function min_value() { } min_value(); Sve nacine sam probao, ali mi tesko polazi za rukom... Treba mi da provem bilo koji niz za tom funkcijom, tj. samo brojeve... Link to comment Share on other sites More sharing options...
Chegevara Posted March 27, 2014 Report Share Posted March 27, 2014 Izgleda da je nepremostiv problem onaj kod "razbiti" na dvije funkcije. :) Kao razradu teme, mozes iskoristiti funkcije is_array() i count() da provjeris da li je zaista niz prosledjen kao parametar funkciji, i da li je isti prazan, kao i is_numeric() sa kojim ces provjeriti da li je odredjeni element niza numericka vrijednost. Kostur funkcije za maksimalnu vrijednost izgledao bi ovakvo: function max_value($arr) { $max_num = intval($arr[0]); foreach ($arr as $num) { $num = intval($num); if ($num > $max_num) { $max_num = $num; } } return $max_num; } Link to comment Share on other sites More sharing options...
Bobi92 Posted March 28, 2014 Author Report Share Posted March 28, 2014 Hvala za kod, super radi... E sad mi ostalo da vezbam samo i da pokusavam razne varijante... Link to comment Share on other sites More sharing options...
Chegevara Posted March 28, 2014 Report Share Posted March 28, 2014 Evo jos jedna razrada teme. Bilo mi dosadno veceras pa sam se poigrao i pokusao da odradim pametniju verziju funkcije max_value(). Napisano je iz glave i bez provjere ali moglo bi se desiti da fercera. :) function max_value($arr) { $max_num = FALSE; if (is_array($arr) && count($arr) > 0) { foreach ($arr as $val) { if (is_numeric($val)) { // vidi napomenu if ($max_num === FALSE || $val > $max_num) { $max_num = $val; } } } } return $max_num; } Napomena za glavnu provjeru u foreach petlji i rezultat funkcije. Ako je trenutna vrijednost $max_num FALSE znaci da do sada nisi imao numerickih elemenata u nizu, pa je logicno da prvi numerik postane i trenutno najveca vrijednost. Drugi uslov je klasika, odnosno ako je trenutni element veci od trenutno maksimalnog, onda on postoje novi maksimalni. Petlja 'vrti' sve elemente niza $arr, a provjera se vrsi samo za numericke vrijednosti. Kao rezultat funkcije imas maksimalnu vrijednost u slucaju da je niz imao barem jedan numericki element, ili FALSE u slucajevima: da je niz prazan, da ne sadrzi nijedan numericki element, ili da promjenjiva $arr prosledjena funkciji nije niz. Na ovakav nacin sasvim je legitimno da funkciji kao parametar proslijedis nizove koji ne sadrze iskljucivo numericke elemente. Na primjer: array("test", 10, 1, 5, "x" , 30, 65, 50), array("klm", "nop", "qwerty"), array(), itd. Link to comment Share on other sites More sharing options...
Mechanic Posted August 10, 2014 Report Share Posted August 10, 2014 Ako je bitan samo najveći broj i najmanji, onda je jednostavnije sortirati niz i izvući najmanji i najveći broj i to je to. http://php.net/manual/en/function.arsort.php Link to comment Share on other sites More sharing options...
r3d Posted October 10, 2014 Report Share Posted October 10, 2014 Cisto malo napomena... Koliko sam ja upoznat, array funkcije u php-u su prilicno spore. Spore je relativan pojam, ali resursno je vjerovatno efikasnije odraditi foreach petlju, nego sortirati pomocu array funkcije. I sam cesto pisem uredniji kod na racun performansi (npr koristim switch-case petlje). Zavisi i od funkcije do funkcije, ali u vecini slucajeva je brze naokolo nego poprijeko. Link to comment Share on other sites More sharing options...
Boban92 Posted January 16, 2015 Report Share Posted January 16, 2015 Evo kako sam odradio min i max funkciju... function min_max_function ($niz){ $max = $niz[0]; $min = $niz[0]; for ($i = 0; $i < count($niz); $i++){ if($niz[$i] > $max) { $max = $niz[$i]; }elseif ($niz[$i] < $min) { $min = $niz[$i]; } } return $max . $min; } :D :D Link to comment Share on other sites More sharing options...
kodi Posted January 16, 2015 Report Share Posted January 16, 2015 Cisto malo napomena... Koliko sam ja upoznat, array funkcije u php-u su prilicno spore. Spore je relativan pojam, ali resursno je vjerovatno efikasnije odraditi foreach petlju, nego sortirati pomocu array funkcije. I sam cesto pisem uredniji kod na racun performansi (npr koristim switch-case petlje). Zavisi i od funkcije do funkcije, ali u vecini slucajeva je brze naokolo nego poprijeko. uh, ne :D Mozda pre 10+ godina. 2) Min/Max funkcike postoje od PHP4 :( http://php.net/manual/en/function.min.php http://php.net/manual/en/function.max.php Link to comment Share on other sites More sharing options...
Boban92 Posted January 20, 2015 Report Share Posted January 20, 2015 Znam da postoje, ali je od mene trazeno kako cu ja da napravim min i max funkciju... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now