externen string innerhalb einer funktion aufrufen?

seomaniac

Grünschnabel
Guten Abend meine Guten :)

Ich habe wiedermal ein kleines aber sicher lösbares Problem :rolleyes:

Ich möchte einen externer String in eine Funktion laden aber es spuckt leider immer wieder einen Fehler aus.

hier mein beispielcode:

PHP:
$satz = array( '0123456789ABCDEFGHIJKLMNPRSTUVWXYZ', '0123456789' );
$testarray = array( '10', '8', '6', '', $satz[0] );


function getpass() { //  getpass($satz, $testarray) funktioniert leider auch nicht
$newpass = '';
/*hier befindet sich der fehler*/$GLOBALS[$laenge] = $testarray[0]; // $laenge = global $testarray[0]; geht ebenfalls nicht
$GLOBALS[$string] = $testarray[4];

mt_srand((double)microtime()*1000000);

for ($i=1; $i <= $laenge; $i++) {
$newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
}

return $newpass;
}


echo getpass();

mein Problem muss in etwa auf diese Weise gelöst werden denn die werte in $testarray haben gewisse Schwankungen.

Bin natürlich dankbar für jede Antwort :)

liebe Grüße, seomaniac
 
Zuletzt bearbeitet:
item: Genauere Fehlerangaben währen gut

item: Du hast den Ansatz ja bereits drin: $GLOBALS[]
PHP:
$GLOBALS[$laenge] = $GLOBALS['testarray'][0];

Nachtrag: Oder mittels global arbeiten
 
PHP:
function getpass() {
$newpass = '';
$GLOBALS[$laenge] = $GLOBALS[$testarray[0]; // line 23
$GLOBALS[$string] = $GLOBALS[$testarray[4]; // auch so mit fehler: $GLOBALS['testarray'][4]

mt_srand((double)microtime()*1000000);

for ($i=1; $i <= $laenge; $i++) {
$newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
}

return $newpass;
}
hierbei erscheint nach Ausführung:
Parse error: syntax error, unexpected ';', expecting ']' in ...php on line 23
__________
bei:
PHP:
function getpass() {
  global $testarray;
}{
$newpass = '';
$laenge= $testarray[0];
$string= $testarray[4];
//$GLOBALS[$laenge] = $testarray[0];
//$GLOBALS[$string] = $testarray[4];

mt_srand((double)microtime()*1000000);

for ($i=1; $i <= $laenge; $i++) {
$newpass .= substr($string, mt_rand(0,strlen($string)-1), 1);
}

return $newpass;
}
erschein Knallhart nichts :-/
selbst wenn ich im Array $testarray[4] die Werte ohne sie nach $satz[0] weiterzuleiten
definiert habe, da ich Vermutete das es daran liegt. :suspekt:

Wäre nett wenn ihn mir nochmal einen kleinen Stupser in die richtige Richtung geben könnten :)

lg
 
In deinem zweiten Code sehe ich min. eine Klammer direkt hinter galobal $testarray; zu viel.

Versuche mal das hier:
PHP:
function getpass()
{ 
  global $testarray; 

  $newpass = ''; 
  $laenge= $testarray[0]; 
  $string= $testarray[4]; 
  
  mt_srand((double)microtime()*1000000); 

  for ($i=1; $i <= $laenge; $i++)
  { 
    $newpass .= substr($string, mt_rand(0,strlen($string)-1), 1); 
  } 
  
  return $newpass; 
}
 
Ich verbeuge mich vor Dir :)

Vielen vielen Dank,
Es funktioniert! :)

Habe noch viel zu Lernen, die geschwungenen Klammern sind mir noch etwas Suspekt :D
 
Und im ersten Beispiel hast du mein Code völlig falsch abgeschrieben

PHP:
//Dein falscher Code
$GLOBALS[$laenge] = $GLOBALS[$testarray[0];

//Der richtiger Code
$GLOBALS[$laenge] = $GLOBALS['testarray'][0];

Wobei ich an $GLOBALS[$laenge] zweifle. Es ist Code-mässig richtig, macht aber wahrscheinlich nicht was du willst. Wie wird $GLOBALS[$laenge] später wieder ausgewertet?
$GLOBALS[$laenge] ergibt ein Eintrag im Array $GLOBALS mit dem Index im Wert von $laenge
Als Beispiel:
PHP:
$länge = 15;
$GLOBALS[$laenge] = 100;
var_dump($GLOBALS);
/**
ergibt:
array( 15 => 100)
*/
 
@yaslaw,

Deinen codeschnipsel habe ich natürlich auch genau wie Geschrieben getestet aber heraus kommt:
Notice: Undefined variable: laenge in ...php on line 49

aber halb so Wild, das Global einzubinden wie von Comfreek gezeigt
find ich kurz und praktischer.

vielen Dank euch beiden für die Hilfestellung :)
 
Zurück