06. november 2005 - 20:32
Der er
22 kommentarer
bladre i array
Kan ikke få det til at spille, at bladre i et array. Jeg kører en while hvor jeg genererer mit array: while($rAllPictures = $q->fetchRow()) { $arrImg[] = $rAllPictures["image_id"]; } Så har jeg et array alá: Array ( [0] => 27 [1] => 28 [2] => 29 [3] => 30 [4] => 31 [5] => 32 [6] => 33 [7] => 34 [8] => 35 [9] => 36 [10] => 37 [11] => 38 ) Jeg skal så lave nogle next og prev links hvor man skal kunne bladre mellem disse id'er. Hvordan hulen gør jeg? Så den også ændrer pointeren hver gang, så next og prev ikke vil være de samme hele tiden.
Annonceindlæg fra Trustworks
06. november 2005 - 20:41
#2
ahh ikke helt, for mit problem er brugen af array funktionerne...
06. november 2005 - 20:45
#3
array funktionerner?
06. november 2005 - 20:47
#4
Du har array funktioner som NEXT() PREV() CURRENT() RESET og END()
06. november 2005 - 20:57
#5
Det er jeg klar over.
06. november 2005 - 21:00
#6
Hvad er det så du mener?
06. november 2005 - 21:02
#7
Hvordan jeg bruger dem i praksis! Har forsøgt med: while($rAllPictures = $q->fetchRow()) { $arrImg[] = $rAllPictures["image_id"]; } $next = next($arrImg); <a href="foo.php?id=".$next."">next</a> Men det vil resultere i at $next har samme værdi hver gang. Hvordan ændrer jeg pointeren for hver gang................?
06. november 2005 - 21:13
#8
Hvad med noget i denne stil: $offset = $_GET["offset"]; while($rAllPictures = $q->fetchRow()) { $arrImg[] = $rAllPictures["image_id"]; } $antal = count($arrImg); echo "<img src=\"".$arrImg[$offset]."\" /> if($antal > $offset) { $next = $offset + 1; <a href="foo.php?offset=".$next."">Next</a> } if($offset > 0) { $prev = $offset - 1; <a href="foo.php?offset=".$prev."">Prev</a> }
06. november 2005 - 21:14
#9
Tak for forslaget, sådan plejer jeg også at gøre...men kan jeg ik bruge next og prev funktionerne og bruge den interne pointer?
06. november 2005 - 21:17
#10
Du kan ikke holde styr på det fra gang til gang nej! Med mindre du kan sætte pointeren udfra offset, og det synes jeg faktisk ikke lige at kunne finde en funktion som gør.
06. november 2005 - 21:22
#11
Okay...problemet er nemlig at jeg åbner en popup med en get værdi med en start offset parameter. Denne værdi er fx 342, den kunne have entry 4 i mit array. 4 => 342. 4 skal så være start offset, så man kan bladre tilbage eller frem, hvis man fx starter midt inde i arrayet. 342 kan ikke bruges som pointer derfor...hvordan gør jeg det? Skulle forsat gerne bruge 342 som get værdi og ikke entry'et i arrayet.
06. november 2005 - 21:28
#12
Altså som det eksempel på array jeg pastede: Array ( [0] => 27 [1] => 28 [2] => 29 [3] => 30 [4] => 31 [5] => 32 [6] => 33 [7] => 34 [8] => 35 [9] => 36 [10] => 37 [11] => 38 ) Er værdierne get pointeren, altså 27, 28, 29, ikke 0, 1, 2. Sådan skal det fortsat blive ved med at være...
06. november 2005 - 21:34
#13
En metode til at få fat i key ud fra en given værdi: function current_key($value, $array) { while ($p = current($array)) { if ($p == $value) return key($array); } next($array); return -1; }
06. november 2005 - 21:36
#14
Så tror jeg måske du skal bruge: key() key(342) skulle gerne give dig index 4.
06. november 2005 - 21:38
#15
jakobdo, sådan fungerer key() ikke. Den returnere blot indexet på den aktuelle post.
06. november 2005 - 21:42
#16
hmortensen: Findes der virkelig ikke nogen array-funktion som kan returnere index på en værdi?
06. november 2005 - 21:43
#17
Jeg har lige løbet listen igennem uden held, derfor ovenstående. Jeg kan heller ikke komme i tanke om at jeg har haft brug for det ;)
07. november 2005 - 01:58
#18
array_search() kan bruges. function get_id($nr, $var="", $vararray) { $key = array_search($nr, $vararray); if(empty($var)) { // forrige index return @$vararray[$key-1]; }else{ // næste index return @$vararray[$key+1]; } } Så kan du få den key du skal bruge + / -
07. november 2005 - 02:07
#19
ehmm, som ex. <?php function get_id($my_array, $to_find, $var="") { if(is_array($my_array)) { $key = array_search($to_find, $my_array); if(empty($var)) { return @$my_array[$key-1]; }else{ return @$my_array[$key+1]; } }else{ return false; } } $ar = array(41,12,3,47,62,68,9); foreach($ar as $var) { echo"<a href=\"". $_SERVER["PHP_SELF"] ."?vis=". $var ."\">Link til ". $var ."</a><br>\n"; } echo"<p>\n"; if(isset($_GET["vis"])) { echo"forrige: ". get_id($ar, $_GET["vis"]) ."<br>\n"; echo"næste: ". get_id($ar, $_GET["vis"], 1); }else{ echo"næste: ". get_id($ar, $ar[0], 1); } ?>
07. november 2005 - 02:15
#20
hmm, her er lige en mere jeg havde liggende <?php $ar = array(10,22,35,41,600,87,95); function get_id($myarray, $nr, $var="") { global $idarray; $key = array_search($nr, $myarray); if(empty($var)) { return @$myarray[$key-1]; }else{ return @$myarray[$key+1]; } } $start = current($ar); $first = "<a href=\"". $_SERVER["PHP_SELF"] ."?id=". $start ."\">Start</a>"; if(isset($_GET["id"])) { if(in_array($_GET["id"], $ar)) { if(true == get_id($ar, $_GET["id"])) { echo"<a href=\"". $_SERVER["PHP_SELF"] ."?id=". get_id($ar, $_GET["id"]) ."\">forrige</a>"; echo" "; } if(true == get_id($ar, $_GET["id"], 1)) { echo"<a href=\"". $_SERVER["PHP_SELF"] ."?id=". get_id($ar, $_GET["id"], 1) ."\">Næste</a>"; } }else{ echo $first; } }else{ echo $first; } echo"<p>". implode(", ", $ar); ?>
07. november 2005 - 02:16
#21
global $idarray; er ikke noget.
07. november 2005 - 02:20
#22
sorry for spam, men nok så'n her så: <?php $ar = array(10,22,35,41,600,87,95); function get_id($myarray, $nr, $var="") { $key = array_search($nr, $myarray); if(empty($var)) { return @$myarray[$key-1]; }else{ return @$myarray[$key+1]; } } $first = "<a href=\"". $_SERVER["PHP_SELF"] ."?id=". $ar[0] ."\">Start</a>"; if(isset($_GET["id"])) { if(in_array($_GET["id"], $ar)) { if(true == ($forrige = get_id($ar, $_GET["id"]))) { echo"<a href=\"". $_SERVER["PHP_SELF"] ."?id=". $forrige ."\">forrige</a>"; echo" "; } if(true == ($next = get_id($ar, $_GET["id"], 1))) { echo"<a href=\"". $_SERVER["PHP_SELF"] ."?id=". $next ."\">Næste</a>"; } }else{ echo $first; } }else{ echo $first; } echo"<p>". implode(", ", $ar); ?>
Vi tilbyder markedets bedste kurser inden for webudvikling