Lukas.: Wo liegt mein Syntaxfehler?

Hallo,

so gehts prima:

echo('[
{"date":"1 \/ 2014","Summe":'.$arr_Min2[0].'},
{"date":"2 \/ 2014","Summe":4500},
{"date":"3 \/ 2014","Summe":5100},
{"date":"4 \/ 2014","Summe":3699}
]');

So aber nicht:

echo('[
{"date":"1 \/ 2014","Summe":'.$arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2].'},
{"date":"2 \/ 2014","Summe":4500},
{"date":"3 \/ 2014","Summe":5100},
{"date":"4 \/ 2014","Summe":3699}
]');

Wie kann ich innerhalb des Strings meine Rechenoperation durchführen?

Lukas

  1. Hallo Lukas,

    {"date":"1 / 2014","Summe":'.$arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2].'},

    indem du Klammern verwendest (ungetestet)

    {"date":"1 \/ 2014","Summe":'.($arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2]).'},
    

    Viele Grüße

    mbr

    1. Hallo mbr,

      {"date":"1 \/ 2014","Summe":'.($arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2]).'},
      

      you made my day :-)

      Dank Dir

      Lukas

  2. Wie kann ich innerhalb des Strings meine Rechenoperation durchführen?

    Einklammern:

    <?php
    $arr_Min2[0]=1;
    $arr_Min2[1]=2;
    $arr_Min2[2]=4;
    
    echo('[
     {"date":"1 \/ 2014","Summe":' . ( $arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2] ) . '},
     {"date":"2 \/ 2014","Summe":4500},
     {"date":"3 \/ 2014","Summe":5100},
     {"date":"4 \/ 2014","Summe":3699}
    ]');
    

    Ergebnis:

    [
     {"date":"1 \/ 2014","Summe":7},
     {"date":"2 \/ 2014","Summe":4500},
     {"date":"3 \/ 2014","Summe":5100},
     {"date":"4 \/ 2014","Summe":3699}
    ]
    

    Im Übrigen: Warum versuchst Du Json von Hand zu erzeugen?

    <?php
    $arr_Min2[0]=1;
    $arr_Min2[1]=2;
    $arr_Min2[2]=4;
    
    $a[0]['date']='1/2014';
    # $a[0]['summe']=$arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2];
    $a[0]['summe']=array_sum($arr_Min2);
    $a[1]['date']='2/2014';
    $a[1]['summe']=4500;
    
    echo json_encode($a, JSON_PRETTY_PRINT). "\n";
    

    (da wäre auch noch arary_sum() ...) - Ergebnis:

    [
        {
            "date": "1\/2014",
            "summe": 7
        },
        {
            "date": "2\/2014",
            "summe": 4500
        }
    ]
    
  3. Tach!

    echo('[
    {"date":"1 \/ 2014","Summe":'.$arr_Min2[0] + $arr_Min2[1] + $arr_Min2[2].'},
    ]');
    

    Wie kann ich innerhalb des Strings meine Rechenoperation durchführen?

    Auch PHP hat eine Operatoren-Rangfolge. Punkt, Plus und Minus (hier nicht verwendet) haben dieselbe Priorität und eine linke Assoziativität. Letzteres bedeutet, dass paarweise von links beginnend nacheinander die Operanden miteinander berechnet werden. Damit werden kommt zuerst eine String-verknüpfung an die Reihe, dann damit eine Addition, wobei der String als 0 interpretiert wird, weil er nicht mit einer Zahl anfängt. Und so weiter und so fort. Eigene Prioritäten können, wie schon vorgeschlagen, mit Klammern gesetzt werden.

    dedlfix.