04. oktober 2007 - 23:54
Der er
14 kommentarer
problem med array der skal "opdeles"
Hej eksperter Hvordan kan jeg opdele mit array så jeg et sted viser 1. post fra mit array og et andet sted viser resten fra den pågældende række. Min kode er her, med angivelse af hvordan jeg gerne vil have det til at se ud, men kan sgu ikke lige hitte ud af det. <?php echo $this->table->intro;?> <?php if(count($this->rows) == 0){?> <div class="emptyDataMessage"><?php echo $this->emptyDataMessage;;?></div> <?php }else{ foreach($this->rows as $group){?> <table class="fabrikTable" style="width: 100%;"> <tr class="oddrow1_modul"><td colspan="3"><a href="index.php?option=com_fabrik&Itemid=9">Se alle stillinger</a></td></tr> <?php $c = 0; foreach($group as $row){ ?> <tr class="oddrow<?php echo $c % 2;?>_modul"> <td> <?php foreach($this->headings as $heading=>$label){ ?> FØRSTE VALUE HER MEN HVORDAN???<br /><?php echo($row->$heading);?> <?php }?> </td> </tr> <?php $c++; } }?> <tr><td colspan="3" align="right">1 2 næste side</td></tr> </table> <?php }
Annonceindlæg fra Computerworld it-jobbank
04. oktober 2007 - 23:58
#1
og det er ikke et numerisk indekseret array - ved ikke om det betyder noget...
05. oktober 2007 - 00:21
#2
Det var faktisk ikke helt korrekt. Her er mit eks. som jeg gerne vil have det til at se ud: <?php if(count($this->rows) == 0){?> <div class="emptyDataMessage"><?php echo $this->emptyDataMessage;;?></div> <?php }else{ foreach($this->rows as $group){?> <table class="fabrikTable" style="width: 100%;"> <tr class="oddrow1_modul"><td colspan="3"><a href="index.php?option=com_fabrik&Itemid=9">Se alle stillinger</a></td></tr> <?php $c = 0; foreach($group as $row){ ?> <tr class="oddrow<?php echo $c % 2;?>_modul"> <td> FØRSTE VALUE HER MEN HVORDAN???<br /> <?php foreach($this->headings as $heading=>$label){ echo($row->$heading); } ?> </td> </tr> <?php $c++; } }?>
05. oktober 2007 - 00:26
#3
<ole> Hvis det er et associativt array, returnerer count($this->rows) jo 0 /mvh </bole>
05. oktober 2007 - 00:26
#4
Det var ikke helt så nemt som det lød.. metode 1. lav noget counter og en if sætning.. men det er grimt og burde være unødvendigt.. metode 2. tilføj disse 2 liner over din foreach list($firstkey,$firstvalue) = each($group); reset($group); og så skulle du være kørende..
05. oktober 2007 - 00:42
#5
daniel_d >> Der er også rod i dine 'tuborger'. Der er fem, der åbner - men kun fire, der lukker. Hvorfor bruger du i det hele taget den rodede kodestil? Du får kun problemer ud af at rode markup- og serverkode sammen på den måde. Lav i stedet funktioner, der samler strenge og returnerer dem til funktionskald i HTML'en.
05. oktober 2007 - 00:49
#6
chrisp: hvis det er sådan her du mener, så giver det intet output: <?php list($firstkey,$firstvalue) = each($group); reset($group); ?><br /> <?php foreach($this->headings as $heading=>$label){ echo($row->$heading); } ?> ole: jeg er en anelse (meget) på tynd is her, men laver jeg en: var_dump($row) giver mig: object(stdClass)#125 (13) { ["jos_fabrik_formdata_2.job"]=> string(186) "PHP Programmør Århus" ["jos_fabrik_formdata_2___job"]=> string(186) "PHP Programmør Århus" ["jos_fabrik_formdata_2.region"]=> string(172) "(alle)" ["jos_fabrik_formdata_2___region"]=> string(172) "(alle)" ["jos_fabrik_formdata_2.frist"]=> string(176) "18-10-2007" ["jos_fabrik_formdata_2___frist"]=> string(176) "18-10-2007" ["jos_fabrik_formdata_2.fabrik_internal_id"]=> string(1) "2" ["jos_fabrik_formdata_2___fabrik_internal_id"]=> string(1) "2" ["__pk_val"]=> string(1) "2" ["_cursor"]=> int(0) ["_total"]=> int(2) ["fabrik_edit"]=> string(175) "View" ["fabrik_view"]=> string(164) "View" } og var_dump($row->$heading); får jeg f.eks: string(177) "PHP programmør Århus" string(177) "(alle)" string(176) "24-10-2007" Jeg vil så gerne splitte arrayet op efter "PHP programmør Århus" , eller alternativt indsætte en key mellem "PHP programmør Århus" og "(alle)" med noget html i.
05. oktober 2007 - 00:53
#7
ole: grunden til at der mangler en tuborg, er at jeg ikke har kopieret hele koden ind. Den er der :) ved godt koden ikke er så elegant, men skal bare have det til at virke hurtigt, så må jeg "pudse det af bagefter"...
05. oktober 2007 - 00:57
#8
ok.. vi tager den i mindre skridt :-) 1. Hvad er det for et array du vil have første værdi fra $group eller $this->headings hvis det er $group som jeg tror?, så skal du erstatte $c = 0; foreach($group as $row){ med $c = 0; list($firstkey,$firstvalue) = each($group); reset($group); foreach($group as $row){ koden giver ganske rigtigt ikke noget output. den ligger bare den første værdi ind i variablen $firstvalue så det du skal for at få noget ud er at erstatte FØRSTE VALUE HER MEN HVORDAN??? med <?php echo $firstvalue; ?>
05. oktober 2007 - 01:05
#9
det er første værdi af ($row->$heading) jeg vil have fat i. men det skal så "fjernes" fra arrayet så det ikke vises igen når: <?php foreach($this->headings as $heading=>$label){ echo ($row->$heading); } ?> køres igennem har fået denne til at virke: <?php }else{ foreach($this->rows as $group){?> <table class="fabrikTable" style="width: 100%;"> <tr class="oddrow1_modul"><td colspan="3"><a href="index.php?option=com_fabrik&Itemid=9">Se alle stillinger</a></td></tr> <?php $c = 0; foreach($group as $row){ ?> <tr class="oddrow<?php echo $c % 2;?>_modul"> <td> <?php list($firstkey,$firstvalue) = each($row); reset($row); ?> <?php echo $firstvalue; ?><br /> <?php foreach($this->headings as $heading=>$label){ echo ($row->$heading); } ?> </td> </tr> <?php $c++; } }?> men så vises første værdi 2 gange, så hvordan er det nu man så fjerner værdien. Kan ikke helt få array_shift til at virke...
05. oktober 2007 - 01:21
#10
Hvordan ser array'et $row->$heading ud?
05. oktober 2007 - 01:34
#11
Du skal fjerne reset($row);.. så får du ikke den første værdi 2 gange.. each = rykker en plads i array'et reset = resetter det til start.
05. oktober 2007 - 01:42
#12
Det har jeg prøvet, men det hjælper lige fedt...
05. oktober 2007 - 03:10
#13
Ole: Er det en var_dump du er ude efter? var_dump($row->$heading); så får jeg f.eks: string(177) "PHP programmør Århus" string(177) "(alle)" string(176) "24-10-2007"
05. oktober 2007 - 11:18
#14
Kan du ikke prøve at sende noget output.. for jeg er blevet lidt forviret på hvad det egentlig er du vil havde ud.. vis du sender det du får og så bagefter det du vil havde.. så har vi et klart mål at arbejde mod :-)
Vi tilbyder markedets bedste kurser inden for webudvikling