Returnera en array

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Jester73
    Medlem
    • 2012-03-26
    • 121

    #1

    Returnera en array

    Hej

    Antagligen har jag bara glömt ett komma någonstans men here goes!

    Varför returnerar följande kod inte en array?


    PHP Code:
    function rensaFormular(){
        while (list($key, $val)=each($_POST)){
            if (!strpos($key, "exc_",0)==0) {
                   $cleanvalue[$key]=$val;
            }  
        }
        return $cleanvalue;
    } 
    
    Jag har en annan funktion som däremot returnerar en array utan problem, vad är skillnaden?
    PHP Code:
    //Månadsarray
    function manaderNum(){
        $mandader[1]="Januari";
        $mandader[2]="Februari";
        $mandader[3]="Mars";
        $mandader[4]="April";
        $mandader[5]="Maj";
        $mandader[6]="Juni";
        $mandader[7]="Juli";
        $mandader[8]="Augusti";
        $mandader[9]="September";
        $mandader[10]="Oktober";
        $mandader[11]="Novmeber";
        $mandader[12]="December";
        
        return $mandader;
    } 
    
    Med vänlig hälsning

    Clownen
  • Gildebrand
    Medlem
    • 2009-06-06
    • 918

    #2
    skriv ==each istället för =each
    Kodfabriken - Webb- & apputveckling

    Comment

    • Jester73
      Medlem
      • 2012-03-26
      • 121

      #3
      Funkar inte alls
      Med vänlig hälsning

      Clownen

      Comment

      • Jester73
        Medlem
        • 2012-03-26
        • 121

        #4
        Kan tillägga att ovan funktion anropas från följande funktion
        PHP Code:
        function buildSQLUpdate($tabell, $urval, $addCol,$addValue){
            $temp=rensaFormular($_POST);
            print_r($temp);
            //array_pop($_POST);
            //array_shift($_POST);
            //while (list($key, $val)=each($temp)){
            //    $tmpvalues=$tmpvalues." ".$key."='".$val."', ";
            //}
            $tmpvalues=trim($tmpvalues);
            $tmpvalues=substr($tmpvalues,0,strlen($tmpvalues)-1);
            $sqlQ="UPDATE $tabell SET $tmpvalues $urval";
            return $sqlQ; 
        
        Med vänlig hälsning

        Clownen

        Comment

        • casca
          Medlem
          • 2000-02-11
          • 3262

          #5
          Eftersom du kör en if-sats så är det fullt möjligt att du aldrig skapar $cleanvalue som array.
          Johan Norberg, webbutvecklare.

          @GitHub

          Läs min blogg

          Comment

          • Jester73
            Medlem
            • 2012-03-26
            • 121

            #6
            Ok men hur skall jag lösa problemet.
            Jag provade att sätta upp en array utfrån en sträng men då hade den inte ens läst in $_POST till funktionen?

            Det går väl att anropa $_POST direkt i den funktionen?
            Med vänlig hälsning

            Clownen

            Comment

            • casca
              Medlem
              • 2000-02-11
              • 3262

              #7
              Originally posted by Jester73
              Ok men hur skall jag lösa problemet.
              Jag provade att sätta upp en array utfrån en sträng men då hade den inte ens läst in $_POST till funktionen?

              Det går väl att anropa $_POST direkt i den funktionen?
              Vad jag menade i första hand var att kontrollera if-satsen, för att se vad som händer.

              Men det är också en ohållbar lösning att inte tänka på möjligheten att inga värden validerar, och vad som händer när arrayen inte returnerar nånting.
              Johan Norberg, webbutvecklare.

              @GitHub

              Läs min blogg

              Comment

              • walter groupius
                Medlem
                • 2004-07-30
                • 230

                #8
                PHP Code:
                function rensaFormular(){
                 $cleanvalue = false;
                foreach($_POST as $key => $value){
                    print "<br> loopar post med värdet $value";
                  if (!strpos($key, "exc_",0)==0) {
                      print "<br>ifsats sann";
                      $cleanvalue[$key]=$val;
                  }
                  return $cleanvalue;
                }
                } 
                
                kör foreach istället och felsök

                eller kör extract på post
                roliga filmer, boka hotell, konferens, bilder, Spa

                Comment

                • Jester73
                  Medlem
                  • 2012-03-26
                  • 121

                  #9
                  Jo, jag har felsökt på indatat i $_POST också och när jag började denna post så hade jag en array i funktionen rensaFormular.

                  Men det verkar fungera lite si och så vilket i sig är underligt....får nog börja om lite.
                  Med vänlig hälsning

                  Clownen

                  Comment

                  • Jester73
                    Medlem
                    • 2012-03-26
                    • 121

                    #10
                    Har exprimenterat en hel del och det verkar som detta fungerar.
                    PHP Code:
                    function rensaFormular(){
                        foreach($_POST as $key=>$value){
                            if (substr_count($key, "exc_",0)==0) {
                                   $cvalues[$key]=$value;
                            }  
                        }
                        return $cvalues;
                    } 
                    
                    Med vänlig hälsning

                    Clownen

                    Comment

                    Working...