Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe: Fatal error
RedPartisan
02.02.2004, 11:32:05
Fatal error: [] operator not supported for strings in ...file.php on line 73
die gemeinte line sieht so aus:
$array[] = $wert;
Was kann ich tun?
feuervogel
02.02.2004, 11:43:15
bitte immer alles posten was das problem betrifft.
<?php
$wert = "fünf";
$array[] = $wert;
?>
läuft einwandfrei.
eventuell ist $array ein string, also du hast irgendwo vorher mal geschrieben $array = "blubb";
falls dich blubb an der stelle nicht mehr interessiert, schreib $array = array(); vor deine zeile mit dem fehler.
RedPartisan
02.02.2004, 11:52:11
naja, das ganze script so aus:
for($ii=0;$ii<=$anz;$ii++){
$ges_code = "";
for($i=1;$i<=$len;$i++){
srand((double)microtime()*10000000000000);
if($i % 2 == 0){
$sr = rand(97,122);
}
else{
$sr = rand(48,57);
}
$zeichen = chr($sr);
$ges_code = $ges_code . $zeichen;
}
$ges_code = strtoupper($ges_code);
$codes[] = "$ges_code";
$zaehle = array_count_values($codes);
while(list($key, $val) = each($zaehle)){
if($val >= 2){
$codes = array_pop($codes);
$anz++;
}
}
}
und das soll wie gezeigt passwörter erstellen. falls ein passwort schon einmal vorkommt, wird es gelöscht...
wenn ich aber nur 4-stellige passwörter brauche (also $len=4), und das aber in einer großen menge (zb. $anz = 100), dann tritt der oben genannte fehler auf...
woran liegz?
feuervogel
02.02.2004, 11:56:53
das ganze script kann gar nicht so aussehen, da fehlen die <?php und ?>
</besserwissermodus>
aber ich schaus mir gleich mal an...
Yzerman
02.02.2004, 12:07:23
Initialisiere mal vor der gesamten Schleifenstruktur:
unset ($codes);
$codes = array ();
Ich hab die Befürchtung, dass irgendwo vorher der Variablen $codes schonmal ein String zugewiesen wurde.
feuervogel
02.02.2004, 12:13:41
bitte immer alles posten was das problem betrifft.
bitte, wenn sich hier jemand schon die mühe macht, das script testen zu wollen, dann bitte ALLES posten...es hat keine sinn rumzuraten...
$anz und $len sind bei mir undefined...
feuervogel
02.02.2004, 12:16:35
also so gehts prima:
$codes = array();
$codes[] = $ges_code;
kann es sein, dass irgendwo vorher steht:
$codes = "bla"; ??? in diesem script...?
feuervogel
02.02.2004, 12:39:23
so, hab den fehler gefunden...du hast deine for schleife mit dem $ii...
die wird $anz mal wiederholt.
und bei der wiederholung passiert das:
$codes = array_pop($codes);
http://de2.php.net/array_pop
da wird $codes zum string, weil der rückgabe wert von array_pop ein string ist...und beim erneuten schleifendurchlauf tritt der fehler auf...
RedPartisan
02.02.2004, 13:31:32
also kurz:
aus
$code = array_pop($code);
wird:
array_pop($code);
P.s.: Sorry, wegen $anz und $len... das sind natürlich variablen, die von einem Formular kommen !!!
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.