PDA

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 !!!