Ankündigung

Einklappen
Keine Ankündigung bisher.

$i++ in while

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Lavalampe
    hat ein Thema erstellt $i++ in while.

    $i++ in while

    while($einarray[$i]) {
    $i++;
    }

    $i hat nach der Schleife den Wert 0. Was kann ich dagegen tun? Und warum passiert das?

    Danke

  • Manko10
    antwortet
    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.

    Einen Kommentar schreiben:


  • David
    antwortet
    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:


  • Manko10
    antwortet
    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:


  • David
    antwortet
    Bestimmt. Tut sie aber so oder so nicht.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Ä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:


  • David
    antwortet
    War sie nicht. $i war nicht definiert. $signaturen[NULL], undefined element, NULL, while() wird sofort abgebrochen.

    Einen Kommentar schreiben:


  • Lavalampe
    antwortet
    Keine Ahnung, woher das jetzt kam.

    Weißt du denn, warum meine Version nicht funktioniert, obwohl die Bedingung erfüllt war?

    Einen Kommentar schreiben:


  • David
    antwortet
    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:


  • David
    antwortet
    string(43) "text" array(1) { [0]=> string(43) "text" }
    Oh, werden Deine Testsignaturen noch zum Patent angemeldet?

    Einen Kommentar schreiben:


  • Lavalampe
    antwortet
    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:


  • David
    antwortet
    Dann teste es halt so
    PHP-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]; 
    aber poste die genaue Ausgabe, copy&paste.

    Einen Kommentar schreiben:


  • Lavalampe
    antwortet
    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:


  • David
    antwortet
    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:


  • PHP4ever
    antwortet
    Variable i

    Kann eine Variable per $var++; überhaupt hochgezählt werden, solang sie nicht vorher definiert wurde?
    lg Flo

    Einen Kommentar schreiben:

Lädt...
X