Avatar billede _luge_ Nybegynder
16. oktober 2000 - 13:35 Der er 16 kommentarer og
1 løsning

Flerdimensionelt array

Hej med jer
Hvorfor kan jeg kun få fat i den sidst indtastede vare i følgende:

class kurv
          {
                var $vare ;
                var $antal_varer ;
                var $pris_total ;

                function kurv()
                {
                  $this ->init();
                }

                function init()
                {
                  $this->antal_varer = 0;
                  $this->pris_total = 0;
                }


                function laeg_i_kurv($varenum)
                {
                  $search = (mysql_query(\"select * from varer where ArticleNo = \'$varenum\'\"));
                  $row = mysql_fetch_array ($search);


                  $this ->vare = array(\"$antal_varer\" => array(\"varenummer\" => $row[0], \"manufacturer\" => $row[3], \"varetekst\" => $row[2], \"antal\" => 1, \"pris\" => $row[4]));
                  $this ->pris_total = $this ->pris_total + $row[4]; //læg prisen til totalen
                  $this ->antal_varer++;                //tæl antal varer 1 op


                }

                function vis_antal_varer()
                {
                  return ( $this->antal_varer);
                }


                function vis_vare($index)
                {
                  $varen = array(0 => $this ->vare[$index][0],1 => $this ->vare[$index][1], 2 => $this ->vare[$index][2], 3 => $this ->vare[$index][3], 4 => $this ->vare[$index][4])  ;
                  print($this ->vare[$antal_varer][2]);
                  return $varen;

                }

som bliver kald af:

for ($count=0;$count < $k -> vis_antal_varer(); $count++)
                        {$varen = $k -> vis_vare($count); print($varen [0]);}



mvh
_LUgE_
Avatar billede benno Nybegynder
16. oktober 2000 - 13:40 #1
når du skal tilføje elementer i enden af et array skal du ha $arrayName[]=newVar;
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 13:55 #2
Kan du uddybe det lidt?
Avatar billede benno Nybegynder
16. oktober 2000 - 13:59 #3
når du lægger en ny vare i kurven og vil oprette en ny post i arrayet skal du ha [] efter navnet
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 14:09 #4
Sådan:
$this ->vare[] = array($this -> antal_varer => array(\"varenummer\" => $row[0], \"manufacturer\" => $row[3], \"varetekst\" => $row[2], \"antal\" => 1, \"pris\" => $row[4]));

?

Hvordan kan jeg så skrive dem ud?
Avatar billede benno Nybegynder
16. oktober 2000 - 14:10 #5
for($i=0;$i<count($this->vare);$i++)
{
    print $i.\" - \".$this->vare[$i];
}
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 14:15 #6
Her er hvad jeg får skrevet ud:
0 - Array1 - Array2 - Array3 - Array4 - Array
Det er jo ikke lige hvad jeg havde regnet med!

(der er 5 elementer i arrayet)
Avatar billede benno Nybegynder
16. oktober 2000 - 14:18 #7
Nåh ja det er jo fordi hver vare er et array

for($i=0;$i<count($this->vare);$i++)
{
    $tempArr=$this->vare[$i];
    for($k=0;$k<count($tempArr);$k++)
    {
        print $k.\" - \".$tempArr[$k].\"<br>\";
    }
}
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 14:24 #8
Hulk Hulk
udskriver:
0 - Array
0 -
0 -
0 -


___________________________________
function laeg_i_kurv($varenum)
                {
                  $search = (mysql_query(\"select * from varer where ArticleNo = \'$varenum\'\"));
                  $row = mysql_fetch_array ($search);


                  $this ->vare[] = array(\"$antal_varer\" => array(\"varenummer\" => $row[0], \"manufacturer\" => $row[3], \"varetekst\" => $row[2], \"antal\" => 1, \"pris\" => $row[4]));



                  $this ->pris_total = $this ->pris_total + $row[4]; //læg prisen til totalen

                  $this ->antal_varer++;                //tæl antal varer 1 op


                  for($i=0;$i<count($this->vare);$i++)
                    {
                    $tempArr=$this->vare[$i];
                    for($k=0;$k<count($tempArr);$k++)
                          {
                          print $k.\" - \".$tempArr[$k].\"<br>\";
                          }
                    }



                }
Avatar billede benno Nybegynder
16. oktober 2000 - 14:28 #9
hmmm det var sært
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 14:30 #10
Kan det være noget med den måde variablerne bliver lagt i arrayet?
Jeg har prøvet at skrive dem ud efter sql-forespørgslen, og den skriver det rigtige ud!
Avatar billede benno Nybegynder
16. oktober 2000 - 14:41 #11
det er et 3dim array dvs 3 arrays inden i hinanden:

for($i=0;$i<count($this->vare);$i++)
{
    if(is_array($this->vare[$i])
    {
        $tempArr=$this->vare[$i];
          for($k=0;$k<count($tempArr);$k++)´
          {
              if(is_array($tempArr[$k])
              {
                    $tempVare=$tempArr[$k];
                    for($v=0;$v<coun($tempVare);$v++)
                      {
                          print $v.\" - \".$tempArr[$v].\"<br>\";
                      }
                  }

          }
      }
}


prøv den her
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 14:50 #12
Er der ikke kun 2?
For nu skriver den slet ingenting ud!

Du får 100 points hvis det lykkes at hjælpe!
   
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 14:58 #13
kan man ikke skrive noget i retningen af:
print($this->vare[0][\"varetekst\"]) - for at se om der overhovedet er noget i arrayet?
Oventstående skriver intet ud!
Avatar billede benno Nybegynder
16. oktober 2000 - 14:58 #14
ok hvad er det du gerne vil ha??
at funktionen vis_vare skal vise varen??
Avatar billede _luge_ Nybegynder
16. oktober 2000 - 15:00 #15
I sidste ende ja!
Avatar billede benno Nybegynder
16. oktober 2000 - 15:01 #16
der er en del ting galt med denne dims
hvis du er på icq er mit nummer 29899029
ellers send mig en mail med hvad den skal kunne så fixer jeg det
Avatar billede benno Nybegynder
16. oktober 2000 - 18:41 #17
<?


class kurv
          {
        var $vare ;
        var $antal_varer ;
        var $pris_total ;

        function kurv()
        {
          $this->antal_varer = 0;
          $this->pris_total = 0;
        }

        function laeg_i_kurv($varenum)
        {



          $this ->vare[] =array(\"varenummer\" => 123, \"manufacturer\" => \'Bandit\', \"varetekst\" => \'en vare\', \"antal\" => 1, \"pris\" => \'1000\');
          $this ->pris_total = $this ->pris_total++; //læg prisen til totalen
          $this ->antal_varer++;                //tæl antal varer 1 op


        }

        function vis_antal_varer()
        {
          return ( $this->antal_varer);
        }


        function vis_vare($index)
        {

          $varen = array(0 => $this ->vare[$index][0][\'varenummer\'],1 => $this ->vare[$index][0][\'manufacturer\'], 2 => $this ->vare[$index][0][\'varetekst\'], 3 => $this ->vare[$index][0][\'antal\'], 4 => $this ->vare[$index][0][\'pris\'])  ;

          return $varen;

        }

}

$temp=new kurv;

$temp->laeg_i_kurv(0);

$hest=$temp->vis_vare(0);
print count($hest);
Print \"<br>\\n\";
reset ($hest);
while (list ($key, $val) = each ($hest)) {
  echo \"$key => $val<br>\";
}

?>



Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester