while($einarray[$i]) {
$i++;
}
$i hat nach der Schleife den Wert 0. Was kann ich dagegen tun? Und warum passiert das?
Danke
Ankündigung
Einklappen
Keine Ankündigung bisher.
$i++ in while
Einklappen
Neue Werbung 2019
Einklappen
X
-
Sollte die Möglichkeit bestehen, dass die Signaturen selbst auch | enthalten können, sollte man vielleicht eher preg_split() mit Lookaround auf Backslashes benutzen. Per addcslashes() können dann alle | in den Signaturen selbst maskiert werden. Sollte das zutereffen, könnte ich auch nochmal eine verständlichere Erklärung liefern, aber solange wir hier ein lustiges Ratespiel betreiben, bleiben die Antworten eben vage.
-
Mit hoher Wahrscheinlichkeit: Eine von n Signaturen, durch | getrennt in $signaturen gespeichert, soll ausgewählt werden.
PHP-Code:$x = explode('|', $siganturen);
return $x[array_rand($x)];
Einen Kommentar schreiben:
-
Oder soll das etwa ein Durchlaufen eines Arrays sein, das man Dank der foreach-Schleife auch viel einfacher lösen könnte?
Einen Kommentar schreiben:
-
Ähm mal na ganz blöde frage, diese merkwürdige while-schleife die nicht funktioniert, soll die nicht ganz einfach das selbe ergebnis liefern wie count() ??
Einen Kommentar schreiben:
-
War sie nicht. $i war nicht definiert. $signaturen[NULL], undefined element, NULL, while() wird sofort abgebrochen.
Einen Kommentar schreiben:
-
Keine Ahnung, woher das jetzt kam.
Weißt du denn, warum meine Version nicht funktioniert, obwohl die Bedingung erfüllt war?
Einen Kommentar schreiben:
-
Naja, mir jetzt egal. Denk einfach darüber nach, wozu die var_dump()s genützt hätten und warum dann string(43) "text" nicht weiterhilft.
PHP-Code:<?php
function f($signatur)
{
$signaturen=explode('|', $signatur);
return $signaturen[array_rand($signaturen)];
}
for($i=0; $i<10; $i++)
{
echo f('a|b|c|d').' ';
}
Einen Kommentar schreiben:
-
string(43) "text" array(1) { [0]=> string(43) "text" }
Einen Kommentar schreiben:
-
Code:Warning
Code:: ini_set() has been disabled for security reasons in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 101 string(43) "text" array(1) { [0]=> string(43) "text" } Notice: Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 106 NULL Notice: Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 107 Notice: Undefined index: in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 107 NULL Notice: Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 108 Notice: Undefined index: in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 108 Notice: Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 111
Einen Kommentar schreiben:
-
Dann teste es halt soPHP-Code:$oE = error_reporting(E_ALL);
$oD = ini_set('display_errors', 1);
$signaturen=explode("|", $signatur);
var_dump($signatur);
var_dump($signaturen);
var_dump($i);
var_dump($signaturen[$i]);
while($signaturen[$i]) {
$i++;
}
$select=rand(0, $i);
error_reporting($oE);
ini_set('display_errors', $oD);
return $signaturen[$select];
Einen Kommentar schreiben:
-
In Webspell wird ein klein wenig zu viel reportet, deswegen nehme ich das lieber raus.
Bei dem var_dump() bekomme ich pro Signatur 4 mal NULL ausgegeben.
Einen Kommentar schreiben:
-
Ja. PHP gibt eine Warnung aus und dann wird $i=0 gesetzt.
Das kann man auch schnell mal selbst nachprüfen.
PHP-Code:<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$i++;
echo $i;Notice: Undefined variable: i in ... on line 5
1
Einen Kommentar schreiben:
-
Variable i
Kann eine Variable per $var++; überhaupt hochgezählt werden, solang sie nicht vorher definiert wurde?
lg Flo
Einen Kommentar schreiben:
Einen Kommentar schreiben: