21. oktober 2003 - 23:05Der er
20 kommentarer og 1 løsning
Opret dynamisk farve-array
Hejsa alle,
står lige og mangler en funktion i php, der:
1. Laver et array med vilkårlige farver, for hvilke det gælder, at jeg via variabler kan indstille: 1.a. antal farver i array'et 1.b. om det skal være helt vilkårlige farver, eller om de skal ligge i en bestemt del af farvespektret, fx via red, blue, green, yellow etc, og så bevæger den sig et stykke over/under værdien. Må gerne være formateret sådan #xxxxxx
2. Det er ikke påkrævet at alle farver er forskellige, dvs. der må godt være gengangere, men randomfunktionen skal være effektiv nok til at der er forskelle.
3. Der skal være mulighed for at indsætte et billede istedet for en farve, disse filnavne lægges i et array af denne type: $arr = "fil1.jpg, fil2.gif, fil3.png etc"; Disse skal skiftes ud med tilfældige entries i array'et nævnt under pkt. 1 Er $arr tom, skal der ikke ske noget i den henseende.
Kan i lave det så jeg selv kan indstille spredningen i farverne, ryger der 50 point ekstra oveni.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
er det noget i den her stil (den og godt nok ikke med spredning): <?php $antal = 10; $spectre = array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); function makeArr() { global $spectre,$antal; for ($i=0;$i<$antal;$i++) { $farvearr[$i] = "#"; for ($j=0;$j<6;$j++) { $farvearr[$i] .= $spectre[rand(0,sizeof($spectre))-1]; } } return $farvearr; } function addBld($bld,$arr) { if (sizeof($arr) != 0) $ent = rand(0,sizeof($arr)-1); $arr[$ent] = $bld; return $arr; } $arr = makeArr(); $arr = addBld("billede1.png",$arr); print_r($arr);
Jeg har brygget noget sammen, der laver et array ($my_color[]) med en spredning af farverne, efter nogen valgte parametre. Men jeg er i tvivl om, hvad du mener med punkt 3.
Den fungerer da, helt efter hensigten. Du vælger en startværdi for de tre farver og en for spredningen (alle i procent), samt antal farver. Kan tjekkes her: http://www.buksevand.dk/test/farver.php
Farverne ligger så i array'et: $my_color[] og jeg har for eksemplets skyld printet dem ud. Jeg får ikke tid til at se på pkt. 3 lige nu, men det burde være rimeligt at gå til med fx: array_splice() og shuffle()
functions.php indeholder detox's script (se ovenstående).
Problemet er, at den kun skifter den sidste fil ud, dvs. "fil.jpg" bliver ikke inkluderet.
Et andet problem er at sådan som scriptet er nu, så kan "fil2.jpg" godt komme til at overskrive den $key "fil.jpg" står på. Kan man indbygge en funktion der gør, at hvis en $key har været "udtrukket", så kan den ikke vælges igen. De "udtrukne" $key's ligger i arrayet $taken_arr
Jeg har forsøgt på den her måde, det ser ud til at fungere, men jeg er ikke sikker på, hvad du mener med at de udtrukne $key's ikke må kunne vælges igen. Men hvis du vil genbruge array'et uden de udtrukne filnavne, så skal det vel gemmes på en eller anden facon.
Men din kommentar 23/10-2003 01:06:01 gav mig vist nogenlunde det jeg søgte. Sidder lige og retter det til, og når det virker tilfredsstillende, så får du dine velfortjente point :-)
Ok, ja. Det ser faktisk meget godt ud. Så kan jeg godt se du ikke har brug for formen. Som jeg har lavet det, kan du frit vælge værdi for 'red', 'green', 'blue' og 'spred', så længe det er i procent (altså fra 1-100). Held og lykke med det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.