-1

I am trying to make array with objects in this i have tried but didn't get this structure which i shown below. how can i made this structure? I have edited my question and you can see the structure which i want. Thanks for Help.

$docs = Driver::where('id', '=', $driverID)->get();
if (count($docs) > 0) {
    /*final array to be passed to data*/
    $finalDataArray = array();
    foreach ($docs as $doc) {
        $finalDataArray[] = array(
            'profile_picture' => $doc->profile_picture,
            'dvla_desp' => $doc->dvla_license_desp,
            'dvla_license_expiry' => $doc->dvla_license_expiry,
            'dvla_license_img' => $doc->dvla_license_img,
            'taxi_license_desp' => $doc->taxi_license_desp,
            'taxi_license_expiry' => $doc->taxi_license_expiry,
            'taxi_license_img' => $doc->taxi_license_img,
            'taxi_desp' => $doc->taxi_badge_desp,
            'taxi_expiry' => $doc->taxi_badge_expiry,
            'taxi_badge_img' => $doc->taxi_badge_img,
            'additional_docs_desp' => $doc->additional_docs_desp,
            'additional_docs_expiry' => $doc->additional_docs_expiry,
            'additional_docs_img' => $doc->additional_docs_img,
        );
    }

Want This Structure:

[
  {
     "profile_picture" : "none"
  }
  {
     "dvla_desp": "none",
     "dvla_license_expiry": "2018-01-24",
     "dvla_license_img": example,
  },
  {
     "taxi_license_desp": "none",
     "taxi_license_expiry": "2018-01-24",
     "taxi_license_img": example,
  },
  {
     "taxi_desp": "none",
     "taxi_expiry": "2019-01-06",
     "taxi_badge_img": example,
   }
   {
     "additional_docs_desp": "none",
     "additional_docs_expiry": "2019-01-06",
     "additional_docs_img": example,
   }
]

I'm Getting This:

  "data": [
    {
        "profile_picture": example
        "dvla_desp": "none",
        "dvla_license_expiry": "2018-01-24",
        "dvla_license_img": example
        "taxi_license_desp": "none",
        "taxi_license_expiry": "2019-12-24",
        "taxi_license_img": example
        "taxi_desp": "none",
        "taxi_expiry": "2019-01-06",
        "taxi_badge_img": example
        "additional_docs_desp": "none",
        "additional_docs_expiry": "2018-12-24",
        "additional_docs_img": example
    }
]

6 Answers6

1

You should try this:

$finalDataArray = (object)$finalDataArray;

Updated Answer

 $finalDataArray = json_encode($finalDataArray);
  • @izza: please display result of `$finalDataArray` (i.e `print('
    ');
    print_r($finalDataArray);
    print('
    '); exit;`)
    –  Jan 08 '19 at 13:28
  • i have posted the result which i'm getting. –  Jan 08 '19 at 13:34
0

Try this

if (count($docs) > 0) {
            /*final array to be passed to data*/
            $finalDataArray = array();

            foreach ($docs as $key=> $doc) {

                  $docs->{$key} = $doc;

                $finalDataArray[] = array(
                    'profile_picture' => $doc->profile_picture,
                    'dvla_desp' => $doc->dvla_license_desp,
                    'dvla_license_expiry' => $doc->dvla_license_expiry,
                    'dvla_license_img' => $doc->dvla_license_img,
                    'taxi_license_desp' => $doc->taxi_license_desp,
                    'taxi_license_expiry' => $doc->taxi_license_expiry,
                    'taxi_license_img' => $doc->taxi_license_img,
                    'taxi_desp' => $doc->taxi_badge_desp,
                    'taxi_expiry' => $doc->taxi_badge_expiry,
                    'taxi_badge_img' => $doc->taxi_badge_img,
                    'additional_docs_desp' => $doc->additional_docs_desp,
                    'additional_docs_expiry' => $doc->additional_docs_expiry,
                    'additional_docs_img' => $doc->additional_docs_img,
                );
            }
0

Try this:

$docs = Driver::where('id', '=', $driverID)->get();
if (count($docs) > 0) {
    /*final array to be passed to data*/
    $finalDataArray = array();
    foreach ($docs as $doc) {
        //convert array in object and assign it into array
        $finalDataArray[] = (object) array(
            'profile_picture' => $doc->profile_picture,
            'dvla_desp' => $doc->dvla_license_desp,
            'dvla_license_expiry' => $doc->dvla_license_expiry,
            'dvla_license_img' => $doc->dvla_license_img,
            'taxi_license_desp' => $doc->taxi_license_desp,
            'taxi_license_expiry' => $doc->taxi_license_expiry,
            'taxi_license_img' => $doc->taxi_license_img,
            'taxi_desp' => $doc->taxi_badge_desp,
            'taxi_expiry' => $doc->taxi_badge_expiry,
            'taxi_badge_img' => $doc->taxi_badge_img,
            'additional_docs_desp' => $doc->additional_docs_desp,
            'additional_docs_expiry' => $doc->additional_docs_expiry,
            'additional_docs_img' => $doc->additional_docs_img,
        );
    }
Bhaskar Jain
  • 1,651
  • 1
  • 12
  • 20
0

Right now your're creating a flat associative array. What you would like to achieve in an array containing associative arrays, therefore just do it:

$finalDataArray[] = [
    [
        'profile_picture' => $doc->profile_picture,
    ],
    [
        'dvla_desp' => $doc->dvla_license_desp,
        'dvla_license_expiry' => $doc->dvla_license_expiry,
        'dvla_license_img' => $doc->dvla_license_img,
    ],
    [
        'taxi_license_desp' => $doc->taxi_license_desp,
        'taxi_license_expiry' => $doc->taxi_license_expiry,
        'taxi_license_img' => $doc->taxi_license_img,
    ],
    [
        'taxi_desp' => $doc->taxi_badge_desp,
        'taxi_expiry' => $doc->taxi_badge_expiry,
        'taxi_badge_img' => $doc->taxi_badge_img,
    ],
    [
        'additional_docs_desp' => $doc->additional_docs_desp,
        'additional_docs_expiry' => $doc->additional_docs_expiry,
        'additional_docs_img' => $doc->additional_docs_img,
    ]
);

If you json_encode this array you should receive you desired structure. The small associative arrays within the array will be encoded as objects, because they have named indices and not numeric.

I did not doublecheck this though, feel free to have a try.

Tschitsch
  • 1,253
  • 8
  • 18
0

this might solve your problem

$val1 =(object) array('profile_picture' => "None");
$val2 =(object) array('dvla_desp' => "some value",
            'dvla_license_expiry' => "some value",
            'dvla_license_img' => "some value");
$val3 =(object) array('taxi_license_desp' => "some value",
            'taxi_license_expiry' => "some value",
      'taxi_license_img' => "some value"
     );$val4 =(object) array('taxi_desp' => "some value",
            'taxi_expiry' => "some value",
      'taxi_badge_img' => "some value"
     );$val5 =(object) array('additional_docs_desp' => "some value",
            'additional_docs_expiry' => "some value",
      'additional_docs_img' => "some value"
     );
 $finalDataArray = array($val1,$val2,$val3,$val4,$val5);

echo json_encode($finalDataArray);
0

you can use stdClass instead of Array try this

$docs = Driver::where('id', '=', $driverID)->get();
if (count($docs) > 0) {
/*final array to be passed to data*/
$finalDataArray = array();
foreach ($docs as $doc) {
      $newClass1 = new \stdClass;
      $newClass1->profile_picture = $doc->profile_picture;
      $newClass2 = new \stdClass;
      $newClass2->dvla_desp = $doc->dvla_license_desp;
      $newClass2->dvla_license_expiry = $doc->dvla_license_expiry;
      $newClass2->dvla_license_img = $doc->dvla_license_img;
      $newClass3 = new \stdClass;
      $newClass3->taxi_license_desp = $doc->taxi_license_desp;
      $newClass3->taxi_license_expiry = $doc->taxi_license_expiry;
      $newClass3->taxi_license_img = $doc->taxi_license_img;
      $newClass4 = new \stdClass;
      $newClass4->taxi_desp = $doc->taxi_badge_desp;
      $newClass4->taxi_expiry = $doc->taxi_badge_expiry;
      $newClass4->taxi_badge_img = $doc->taxi_badge_img;
      $newClass5 = new \stdClass;
      $newClass5->additional_docs_desp = $doc->additional_docs_desp;
      $newClass5->additional_docs_expiry = $doc->additional_docs_expiry;
      $newClass5->additional_docs_img = $doc->additional_docs_img;
      $finalDataArray[] = [$newClass1,$newClass2,$newClass3,$newClass4,$newClass5];
}
Islam ElHakmi
  • 274
  • 2
  • 10