Avatar billede psychodad Nybegynder
08. maj 2003 - 07:06 Der er 6 kommentarer og
1 løsning

multidemensionelt array som parameter til function fejler

kan ikke forstå dette her ikke virker...mit array kommer ikke med over. Har prøvet global, også uden success.

Skal siges at det er et array oprettet inde i en function der sendes videre til en anden function, hvis det har noget at sige.

kodestump:

//er som sagt inde i en function det her....   
    $id=1;
    $comments['$id']['author']="hans";
    $comments['$id']['comment']="noget tekst her";
    $comments['$id']['comment_num']=5;
    recurComment($comments, $id);
}

function recurComment($comments, $id)
{
  echo($comments['$id']["author"] . "<br>" .
      $comments['$id']["comment"]. "<br>");
  exit();
}

kodestump - slut

og den udskriver ikke noget i den echo() der...hvis jeg flytter echo op derfra hvor jeg kalder er dataene der (self..).

Men hvorfor er de ikke sendt med over ?
Avatar billede psychodad Nybegynder
08. maj 2003 - 07:29 #1
ok det er så ikke selve parameteroverførslen der failer...men nu synes jeg det virker endnu mere mærkeligt. Eneste mulighed jeg nu ser er at values fra resultset bliver kopiret by reference og dermed glemt efter while løkken ?????

koden forklarer problemstillingen:

//functionen tager artikel-id og antal comments til en artikel og skal
opstille comments under nyheden, childs/parents er pga nogle comments er reply's til andre comments

function printComments($artid, $commentscount)
{
$link=db_connect();
$sql="SELECT * FROM `comments` where `article_id`='$artid' order by `id` ASC";
$result=db_query($sql, $link);

$comments=array();
$firstid=0;

while($row=mysql_fetch_array($result))
{
    $tmpid=$row["id"];
    $tmpparent=$row["parent"];
    if(!$firstid) $firstid=$tmpid;
   
    if($tmpparent!=0)$comments['$tmpparent']["childs"][]=$row["id"];

    $comments['$tmpid']["author"]=$row["author"];
    $comments['$tmpid']["date"]=$row["date"];
    $comments['$tmpid']["time"]=$row["time"];
    $comments['$tmpid']["comment"]=$row["comment"];
    $comments['$tmpid']["comment_num"]=$row["comment_num"];
   
    //indholdet af $comments array vil fint udskrives herfra i en echo()
}

//*******************************************************
//her kan indholdet af $comments array ikke længere læses
//*******************************************************

//her kalder jeg så min function fra før, men dette er underordnet nu..
recurCommentPrint($comments, $firstid, $artid, 0);
}

function recurCommentPrint($comments, $id, $artid, $recurvalue)
{
//function der skal gå igennem comments recursivt...
}
Avatar billede psychodad Nybegynder
08. maj 2003 - 08:02 #2
ok fandt fejlen...
problemet var mine quotes ved $tmpid...så nøglen hed "$tmpid" istedet for værdien af tmpid. Grunden til jeg satte i quotes var jeg ville have et associeret (-stavefejl) array pga rækken af numre ikke er fortløbende. Men har fjernet qoutes for det bør vel virke f.eks bare at adde som $comments[5]=5, $comments[8]=3 med huller imellem.

synderen:
$comments['$tmpid']["comment_num"]=$row["comment_num"];

korrekt:
$comments[$tmpid]["comment_num"]=$row["comment_num"];
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 08:05 #3
Prøv at erstatte

    //her kan indholdet af $comments array ikke længere læses

med

    print_r(4comments);

Det du beskriver kan selvfølgelig ikke lade sig gøre, så der er noget
andet galt. Brug også gerne print_r-funktionen i returCommentPrint,
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 08:06 #4
Sorry - så ikke dit indlæg. Men print_r havde fundet din fejl lynhurtigt.
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 08:11 #5
print_r($comments);
Avatar billede psychodad Nybegynder
08. maj 2003 - 09:11 #6
Den funktion kendte jeg ikke engang...mange tak, gør det da meget nemmere at debugge fremover!
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 09:47 #7
Nemli' :)

Det kan være en fordel at sige "vis kilde" - eller:

print "<pre>";
print_r(....);
print "</pre>";
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

IT-JOB

Jyske Bank

AI-udvikler

Forsvarsministeriets Materiel- og Indkøbsstyrelse

DevOps Engineer (AI) til Forsvarets nye IT-platform

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Specialister til Netværksoperations til Forsvarets nye Digitale Backbone