Dag lieve mensen. Ik heb een probleem met bepaalde waarden die ik in een geneste Array ontvang. Ik kan die waarden op geen enkele manier beter ontvangen, dus moet het omgezet worden. Het gaat om het volgende:

array 

( 'body' => '{

"contactName":"Bart",

"contactPhone":"+32478000000",

"contactEmail":"info@………be",

"contactLanguage":"nl",

"regionId":5,

"passengers":

[{

"name":"Bart",

"child":"",

"weight":"90",

"paymentType":"COUP",

"paymentReference":"1234 5678 90"},

{

"name":"Annelies",

"child":"",

"weight":"70",

"paymentType":"WIRE"},

{

"name":"Amber",

"child":"on",

"weight":"35",

"paymentType":"WIRE"

}

]}

', 

)



Dit moet er gebeuren:


Als “child” empty is, moet het de boolean false dragen;Als “child” de een string ‘on’ bevat, moet het de boolean true dragen;“Weight” moet een integer zijn, geen string, dus zonder haakjes.


Vermits dat dit allemaal in de geneste array zit, weet ik niet goed hoe ik dit moet omzetten. Waarschijnlijk een loop creëren en in de loop de waardes omzetten.

Ik ben nog niet lang bezig met php, dus alle hulp is erg welkom!
Ik heb niet de indruk dat je doorziet wat je precies doet, want je gebruikt $form_submission['fields'] en $request['body'] door elkaar, hoewel die beide hetzelfde veld 'passengers' lijken te bevatten. Controleer die beide eens met var_dump(), zodat je ziet wat erin zit.

Waarom wil je de string 'on' vervangen door de boolean true als je vervolgens de ingevulde formuliergegevens gaat e-mailen? Dan kun je beter child vervangen door kind en 'on' door 'ja' in het HTML-formulier.
Doe het zo :

// begin omzetting

foreach ( $body['passengers'] as $key => $value )
{
    $body['passengers'][$key]['child']  = $value['child'] == '' ? FALSE  : TRUE;
    $body['passengers'][$key]['child']  = $value['child'] == 'on' ? TRUE : FALSE;
    $body['passengers'][$key]['weight'] = (int)$value['weight'];
}

// einde omzetting

$request = json_encode([ 'body' => $body ] );
echo $request;


Het resultaat ziet er zo uit

{"body":{"contactName":"Bart R","contactPhone":"+32.....585","contactEmail":"[email protected]","contactLanguage":"nl","regionId":5,"passengers":[{"name":"Bart","child":false,"weight":90,"paymentType":"COUP","paymentReference":"1234 5678 90"},{"name":"Annelies","child":false,"weight":70,"paymentType":"WIRE"},{"name":"Amber","child":true,"weight":35,"paymentType":"WIRE"}]}}

Reageren