Problem bei Rückgabe eines Arrays
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
aufruf
code
fehler
funktion
nennen
niemand
pos
reihenfolge
rest
schleife
test
testprogramm
verschieben
wert test
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage