1

I have some some data that I need to send to frontend as array of json objects, it basicly should have same structure as this json:

[{"vin":"U5YFF24128L064909","0":"U5YFF24128L064909","case_id":"1462538","1":"1462538","claimnumber":"E140039698","2":"E140039698","platenumber":"5M47465","3":"5M47465","axrmrs_id":"2051707","4":"2051707","insurer_memberid":"MM-O-8AB24F6D-1","5":"MM-O-8AB24F6D-1","country":"CZ","6":"CZ","date_created":"2014-02-10 00:00:00","7":"2014-02-10 00:00:00","totalloss":"N","8":"N","lastcalc_manufacturer_code":"28","9":"28","lastcalc_model_code":"25","10":"25","lastcalc_submodel_code":"07","11":"07","audavin_triggered":"","12":"","accident_date":"2014-02-02 00:00:00","13":"2014-02-02 00:00:00","registration_date":"2008-04-28 00:00:00","14":"2008-04-28 00:00:00","manufacturing_year":"2008","15":"2008","spareparts":"26573.4","16":"26573.4","totalcosts":"42187.47","17":"42187.47","laborhours":"7.3","18":"7.3","laborcosts":"3577","19":"3577","calculationdate":"2014-02-22 23:02:00","20":"2014-02-22 23:02:00","paintlabor":"5995","21":"5995","paintmaterial":"6042.07","22":"6042.07","currency":"CZK","23":"CZK","manufacturer":"KIA","24":"KIA","model":"CEED (ED)","25":"CEED (ED)","submodel":"ACTIVE","26":"ACTIVE","orgName":"Global Expert","27":"Global Expert","textL":"BLATN\u00cdK P PLAKOV\u00c1N\u00cd NOV\u00ddCH D\u00cdL\u016e,DVE\u0158E P PLAK POVRCHU,P\u0158-N\u00c1RAZN\u00cdKLAKOV\u00c1N\u00cd NOV\u00ddCH D\u00cdL\u016e","28":"BLATN\u00cdK P PLAKOV\u00c1N\u00cd NOV\u00ddCH D\u00cdL\u016e,DVE\u0158E P PLAK POVRCHU,P\u0158-N\u00c1RAZN\u00cdKLAKOV\u00c1N\u00cd NOV\u00ddCH D\u00cdL\u016e","textE":null,"29":null},{"vin":"U5YFF24128L064909","0":"U5YFF24128L064909","case_id":"1468328","1":"1468328","claimnumber":"5M47465","2":"5M47465","platenumber":"5M47465","3":"5M47465","axrmrs_id":"2037572","4":"2037572","insurer_memberid":"","5":"","country":"CZ","6":"CZ","date_created":"2014-02-13 00:00:00","7":"2014-02-13 00:00:00","totalloss":"","8":"","lastcalc_manufacturer_code":"28","9":"28","lastcalc_model_code":"25","10":"25","lastcalc_submodel_code":"07","11":"07","audavin_triggered":"","12":"","accident_date":"0000-00-00 00:00:00","13":"0000-00-00 00:00:00","registration_date":"0000-00-00 00:00:00","14":"0000-00-00 00:00:00","manufacturing_year":"2008","15":"2008","spareparts":"25319.55","16":"25319.55","totalcosts":"41529.62","17":"41529.62","laborhours":"7.7","18":"7.7","laborcosts":"3850","19":"3850","calculationdate":"2014-02-23 23:02:00","20":"2014-02-23 23:02:00","paintlabor":"5995","21":"5995","paintmaterial":"6042.07","22":"6042.07","currency":"CZK","23":"CZK","manufacturer":"KIA","24":"KIA","model":"CEED (ED)","25":"CEED (ED)","submodel":"ACTIVE","26":"ACTIVE","orgName":"0","27":"0","textL":"BLAT","textE":null,"29":null}]

How I try it:

foreach ( $array ['result'] ['claim'] as $claim )
 {
 $data = array (
 "claimnumber" =>$claim['@attributes']['id'],
 "date_created" =>$claim['country'],
 "country" =>$claim['creation'],
 "currency" =>$claim ['specific']['currency'],
 "insurer_memberid" =>$claim['insurance']['id'],
 "laborcosts" =>$claim ['specific']['partsCost'],
 "model" =>$claim ['specific']['model_name'],
 "orgName" =>$claim['insurance']['name'],
 "paintLabor" =>$claim['specific']['paintmaterial'],
 "totalcosts" =>$claim ['assessment']['damage-value']
 );
 $result = array();
 $result[] = $data;
 $result[] = array_push($result, $this->convertToJson($result));
 }
 echo $result;

But this return just string "Array", is there some nice way how to create API which display array of objects?

Thanks for any advise :)

asked Dec 16, 2015 at 11:29
1
  • Echo is for strings. I'm a fan of: echo '<pre>' . print_r($result, 1) . '</pre>'; for arrays Commented Dec 16, 2015 at 11:34

4 Answers 4

3

Create the array before the loop, add the data within the loop, then json_encode and echo after the loop:

$result = array();
foreach ( $array ['result'] ['claim'] as $claim )
{
 $data = array (
 "claimnumber" =>$claim['@attributes']['id'],
 "date_created" =>$claim['country'],
 "country" =>$claim['creation'],
 "currency" =>$claim ['specific']['currency'],
 "insurer_memberid" =>$claim['insurance']['id'],
 "laborcosts" =>$claim ['specific']['partsCost'],
 "model" =>$claim ['specific']['model_name'],
 "orgName" =>$claim['insurance']['name'],
 "paintLabor" =>$claim['specific']['paintmaterial'],
 "totalcosts" =>$claim ['assessment']['damage-value']
 );
 $result[] = $data;
}
echo json_encode($result);
answered Dec 16, 2015 at 11:35
Sign up to request clarification or add additional context in comments.

Comments

3

Basically you reset the $result variable in each loop. Change the code to:

$result = array();
foreach ($array['result']['claim'] as $claim) {
 $result[] = array (
 "claimnumber" => $claim['@attributes']['id'],
 "date_created" => $claim['country'],
 "country" => $claim['creation'],
 "currency" => $claim['specific']['currency'],
 "insurer_memberid" => $claim['insurance']['id'],
 "laborcosts" => $claim['specific']['partsCost'],
 "model" => $claim['specific']['model_name'],
 "orgName" => $claim['insurance']['name'],
 "paintLabor" => $claim['specific']['paintmaterial'],
 "totalcosts" => $claim['assessment']['damage-value']
 );
}
echo json_encode($result);
answered Dec 16, 2015 at 11:35

Comments

2
  1. array_push() takes first argument (the array) by reference, you don't need to assign it to $result. So it should be just array_push($result, $this->convertToJson($result));

  2. To return json you can use json_encode function

    echo json_encode($result);

answered Dec 16, 2015 at 11:34

Comments

0

Use print_r() method to print $result because $result is a array variable.

 $result = array();
 foreach ( $array ['result'] ['claim'] as $claim )
 {
 $data = array (
 "claimnumber" =>$claim['@attributes']['id'],
 "date_created" =>$claim['country'],
 "country" =>$claim['creation'],
 "currency" =>$claim ['specific']['currency'],
 "insurer_memberid" =>$claim['insurance']['id'],
 "laborcosts" =>$claim ['specific']['partsCost'],
 "model" =>$claim ['specific']['model_name'],
 "orgName" =>$claim['insurance']['name'],
 "paintLabor" =>$claim['specific']['paintmaterial'],
 "totalcosts" =>$claim ['assessment']['damage-value']
 );
 $result[] = $data;
 $result[] = array_push($result, $this->convertToJson($result));
 }
 print_r($result) ;
answered Dec 16, 2015 at 11:31

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.