kostenloser Webspace werbefrei: lima-city


Problem bei Rückgabe eines Arrays

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    platon123456

    platon123456 hat kostenlosen Webspace.

    Hallo liebe Community,

    ich habe eine Funktion geschrieben, die es ermöglicht innerhalb eines Arrays Werte zu verschieben. Da wird beispielswese benötigt, wenn bei einem CMS die Seiten-IDs und damit die Reihenfolge geändert werden soll.

    Leider hat der Array nach dem Aufruf keinen Wert mehr. Innerhalb der Funktion, vor allem kurz vor der Rückgabe, hat er jedoch seinen korrekten Wert. Hier ist das Testprogramm:

    In diesem Fall wird der Wert $test[3] nach $test[1] verschoben. Der Rest der Werte rückt auf.

    <?php
    
    function makeHigher( $return, $pos, $value, $end ) {
            if( $pos <= $end ) {
                    $temp = $return[$pos];
                    $return[$pos] = $value;
                    $pos++;
                    makeHigher( $return, $pos, $temp, $end );
            }
            else {
                    return $return;
            }
    }
    
    function makeDowner( $return, $pos, $value, $end ) {
            if( $pos >= $end ) {
                    $temp = $return[$pos];
                    $return[$pos] = $value;
                    $pos--;
                    makeDowner( $return, $pos, $temp, $end );
            }
            else {
                    return $return;
            }
    }
    
    function movePosition( $return, $pos, $value, $end ) {
            if( $pos > $end ) {
                    return makeDowner( $return, $pos, $value, $end );
            }
            else if( $pos < $end ) {
                    return makeHigher( $return, $pos, $value, $end );
            }
            else {
                    return $return;
            }
    }
    
    $test = array();
    $loop = 0;
    $end = 5;
    while( $loop <= $end ) {
            $test[$loop] = \"wert[$loop]\";
            echo \"$test[$loop]<br>\";
            $loop++;
    }
    
    echo \"<br>\";
    
    $test = movePosition( $test, 1, $test[3], 3 );
    
    echo \"<br>\";
    
    $loop = 0;
    $end = 5;
    while( $loop <= $end ) {
            echo \"$test[$loop]<br>\";
            $loop++;
    }
    
    ?>



    Beitrag geändert: 19.7.2008 15:50:12 von platon123456
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    platon123456

    platon123456 hat kostenlosen Webspace.

    So, zur Aufklärung:

    Niemand konnte mir den Fehler nennen, aber mit Schleife funktionierts^^

    function makeHigher( $return, $pos, $value, $end ) { 
    
    for($i=$end;$i>$pos;$i--) 
    { 
    $return[$i] = $return[$i-1]; 
    } 
    $return[$pos] = $value; 
    return $return; 
    } 
    
    function makeDowner( $return, $pos, $value, $end ) { 
    for($i=$end;$i<$pos;$i++) 
    { 
    $return[$i] = $return[$i+1]; 
    } 
    $return[$pos] = $value; 
    return $return; 
    } 
    
    function movePosition( $return, $pos, $value, $end ) { 
    if( $pos > $end ) { 
    $returnNeu = makeDowner( $return, $pos, $value, $end ); 
    } 
    else if( $pos < $end ) { 
    $returnNeu = makeHigher( $return, $pos, $value, $end ); 
    } 
    return $returnNeu; 
    }
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!