Multidimensional Array Reformatting in php

60 Views Asked by At

Try to achieve my desired result .But unfortunately unable to achieve that after couple of hours scratching my head . So far, what i tried:

$post_data = array(
    'email_address' => "sda",
    'status_if_new' => 'subscribed',
    'merge_fields' => array(

        'FNAME' => "asd",
        'LNAME' => "sad")
);
$st= "{\"Field0\":\"Value0\",\"Field1\":\"Value1\"}";
$string = str_replace(array('{','}','"'),'',$st);

$custom_array=explode(",",$string);

$len= count($custom_array);


for($i=0;$i<$len;$i++) {
    $fields = explode(":", $custom_array[$i]);

    array_push($post_data["merge_fields"],$fields);
}
echo "<pre>";
var_dump($post_data);
die("sad");

Result Now: after string formatting and push that string into array .

array(3) {
  ["email_address"]=>
  string(3) "sda"
  ["status_if_new"]=>
  string(10) "subscribed"
  ["merge_fields"]=>
  array(4) {
    ["FNAME"]=>
    string(3) "asd"
    ["LNAME"]=>
    string(3) "sad"
    [0]=>
    array(2) {
      [0]=>
      string(6) "Field0"
      [1]=>
      string(6) "Value0"
    }
    [1]=>
    array(2) {
      [0]=>
      string(6) "Field1"
      [1]=>
      string(6) "Value1"
    }
  }
}
sad

What i want to achieve: but i want to achieve that bit differently which you can see below:

array(3) {
  ["email_address"]=>
  string(3) "sda"
  ["status_if_new"]=>
  string(10) "subscribed"
  ["merge_fields"]=>
  array(4) {
    ["FNAME"]=>
    string(3) "asd"
    ["LNAME"]=>
    string(3) "sad"
    ["Field0"]=>
    string(6) "Value0"
    ["Field1"]=>
    string(6) "Value1"
}
}
sad

If any question , feel free to ask me . Anyone? To help me achieve my desired result? TIA.

2

There are 2 best solutions below

0
On BEST ANSWER

Use $post_data["merge_fields"][$fields[0]] = $fields[1]
instead of array_push($post_data["merge_fields"],$fields);

0
On
$post_data = array(
'email_address' => "sda",
'status_if_new' => 'subscribed',
'merge_fields' => array(

    'FNAME' => "asd",
    'LNAME' => "sad")
);
$st= "{\"Field0\":\"Value0\",\"Field1\":\"Value1\"}";
$string = str_replace(array('{','}','"'),'',$st);


$custom_array=explode(",",$string);

$len= count($custom_array);


for($i=0;$i<$len;$i++) {
    $fields = explode(":", $custom_array[$i]);

   $post_data["merge_fields"][$fields[0]] = $fields[1];
}
echo "<pre>";
var_dump($post_data);
die("sad");