Ankündigung

Einklappen
Keine Ankündigung bisher.

komisches verhalten bei einer foreach Schleife

Einklappen

Neue Werbung 2019

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

  • komisches verhalten bei einer foreach Schleife

    Hallo,

    ich mochte ein array mit voreach stück abarbeiten, dabei soll an eine variable immer die $value ausgabe mit einem trennpunkt angehängt werden


    dieses scrict tut genau das was ich will, die ausgabe ist 1 / 1.2 und 1.2.3
    PHP-Code:
    <?php

    $array 
    $arrayName = array('0' => '1',
                                
    '1' => '2',
                                
    '2' => '3');

    foreach (
    $array as $key => $value) {
        
    $string = (empty($string)) ? $string .= ".".$value;
        echo 
    $string;
    }


    ?>
    aber in meinem eigentlichen script, dass genauso aufgebaut ist ist die ausgabe nur 1 und 2???? warum?
    hier das script

    PHP-Code:
    <?php
                $start_step 
    1;
                foreach (
    $mother_array as $k => $v) {
                    
    $mother_tmp = (empty($mother_tmp)) ? $v $mother_tmp .= ".".$v;

                    echo 
    "<td>\n";
                    echo 
    "<form action=".$_SERVER['PHP_SELF']."?step=".$start_step."&mother=".$mother_tmp."&form=submite method='post' accept-charset='utf-8'>\n
                            header: <select name='header' onchange="
    if(this.options[this.selectedIndex].value=='customOption'){\n
                                    toggleField
    (this,this.nextSibling);\n
                                     this
    .selectedIndex='0';\n
                                    
    }">\n
                                        <option value='Reich'>Reich</option>\n
                                        <option value='Unterreich'>Unterreich</option>\n
                                        <option value='customOption'>neu Erstellen</option>\n
                                    </select><input name="
    header" style="display:none;" disabled="disabled" onblur="if(this.value==''){toggleField(this,this.previousSibling);}"><br>\n
                                    name_sience: <input type='text' name='name_sience'><br>\n
                                    name_german: <input type='text' name='name_german'><br>\n
                                    <input type='submit' value='Speichern'>\n
                            </form>\n"
    ;
                    echo 
    "</td>\n";
                    
    $start_step++;
                }
    ?>

    LG, Chris

  • #2
    Du musst halt debuggen.
    Was steht denn in $mother_array, das zeigst du nicht.

    Kommentar


    • #3
      Hallo $mother_array sieht so aus:

      PHP-Code:
      Array (
      [
      0] => 0
      [1] => 4

      ausgaben sind dann natürlich nicht wie oben geschrieben 1 und 2 sondern 0 und 4 aber halt nicht 0 und 0.4 wie ich es eigentlich wünsche

      irgendwie scheint der Inhalt von $mother_tmp verloren zu gehen, ander kann ich mir das nicht vorstellen

      Kommentar


      • #4
        Dein Array auf dein erstes Script angewandt
        PHP-Code:
        $array = array(=> '0',
                       
        => '4');

        foreach (
        $array as $key => $value) {
            
        $string = (empty($string)) ? $string .= ".".$value;
            echo 
        $string;

        Ausgabe
        Code:
        11.4
        Jetzt gehe deinen Code mal Schritt für Schritt durch damit du ihn selbst auch verstehst. Wie man debug ausgaben macht erfährst du aus meinem Link von Beitrag #2.

        Kommentar


        • #5
          Hallo protestix,

          ich stelle hier nur Fragen nachdem ich ausführlich eine Fehlersuche durchgeführt habe, sonst könnte ich hier ja auch meine Aufgabenstellung angeben und fragen wer mir da was programmieren kann!

          zum Fehler, der Fehler war, dass ich mit empty($var) gefragt habe ob ein Wert in der Variable ist oder nicht, dann, wenn nicht den Wert aus dem Array eingetragen habe und der war allerdings 0, das wertet empty() auch als leer = true.


          LG, Chris

          Kommentar


          • #6
            Ist doch besser wenn du selbst dahinter kommst, als wenn man es dir vormacht.
            So ist der Lerneffekt doch gleich viel höher.

            Kommentar

            Lädt...
            X