简体   繁体   中英

How to add an element to every array of dimensional array?

How to add element to array of multiple dimensional array that will give me output like below code

Source code : see there are dynamic name $tgvalues['Name'] = calneder product financial tip health tips personal event

          foreach($json as $templategroup => $tgvalues){
                  $templateval1 = "emailtemplates?expand=".$tgvalues['Name'];
                  $final1 = str_replace(' ','%20',trim($templateval1));
                  $path1 = constant('AMT_BASE_PATH');
                  $url1 = $path1.$final1;
                  $url1;
                  $ch1=curl_init();
                  curl_setopt($ch1,CURLOPT_URL, $url1);
                  curl_setopt($ch1,CURLOPT_RETURNTRANSFER,1);
                  $buffer1 = curl_exec($ch1);
                  curl_close($ch1); 
                  $json1 = json_decode($buffer1, true);
                  $newarray =array('templatename' =>$tgvalues['Name']);
                  print_r(array_merge($json1,$newarray));
                  if (empty($buffer1)){
                      print "There are some problem";
                  } else {
                      $fetchtemplatename1 = Resources_Customers_Customer::fetchtemplategroups();
                      $insert1 = array_diff_assoc($json1, $fetchtemplatename1);

                      //print_r($insert1);
                      $arr_tampgrop =array();
                      foreach($json1 as $key1 => $value1)
                                {


                                    $arr_tampgrop[] =array('Id'=>$value1['Id'],'Name'=>$value1['Name'],'Subject'=>$value1['Subject'],'Body'=>$value1['Body'],'Href'=>$value1['Href']);


                                }
                                //$arrtempname = array($tgvalues['Name']);
                                $arraypush = array_push($arr_tampgrop,$arrtempname["templatename"] = $tgvalues['Name']);
                                print_r($arraypush); 

                              }

                            }

in the source code I am use array_merge ,see line print_r(array_merge($json1,$newarray));

This code, i am getting now

      Array
(
      [0] => Array
    (
        [Id] => 1
        [Name] => Merry Christmas                                   
        [Subject] => Merry Christmas
        [Body] => This is the body
        [Href] => 
    )

[1] => Array
    (
        [Id] => 2
        [Name] => Happy 4th of July                                 
        [Subject] => Happy 4th!
        [Body] => This is the body of a July message
        [Href] => 
    )

[templatename] => Calendar                                          
)
 3Array
(
   [0] => Array
    (
        [Id] => 3
        [Name] => New Product 1                                     
        [Subject] => See this new product
        [Body] => This is the body of a one new product
        [Href] =>
    )

[1] => Array
    (
        [Id] => 9
        [Name] => Drip product 1                                    
        [Subject] => Drip new product 1 subject
        [Body] => Drip new product 1 body
        [Href] => 
    )

[2] => Array
    (
        [Id] => 10
        [Name] => Drip product 2                                    
        [Subject] => Drip new product 2 subject
        [Body] => Drip new product 2 body
        [Href] => 
    )

[3] => Array
    (
        [Id] => 11
        [Name] => Drip product 3                                    
        [Subject] => Drip new product 3 subject
        [Body] => Drip new product 3 body
        [Href] => 
    )

[templatename] => Products                                          
)
5Array
(
   [0] => Array
    (
        [Id] => 4
        [Name] => Happy Birthday                                    
        [Subject] => Happy Birthday
        [Body] => This is the body of a birthday card
        [Href] => 
    )

[1] => Array
    (
        [Id] => 5
        [Name] => Happy Anniversary                                 
        [Subject] => Happy Anniversary
        [Body] => This is the body of a anniversary card
        [Href] => 
    )

[2] => Array
    (
        [Id] => 6
        [Name] => After Days 0                                      
        [Subject] => We are glad you joined x0 days ago
        [Body] => This is the body of a join x0 days ago card
        [Href] => 
    )

[3] => Array
    (
        [Id] => 7
        [Name] => After Days 1                                      
        [Subject] => We are glad you joined x1 days ago
        [Body] => This is the body of a join x1 days ago card
        [Href] => 
    )

[4] => Array
    (
        [Id] => 8
        [Name] => After Days 2                                      
        [Subject] => We are glad you joined x2 days ago
        [Body] => This is the body of a join x2 days ago card
        [Href] => 
    )

[templatename] => Personal Events                                   
  )
      6Array
         (
[0] => Array
    (
        [Id] => 12
        [Name] => Drip health tip 1                                 
        [Subject] => Drip health tip 1 subject
        [Body] => Drip health tip 1 body
        [Href] => 
    )

[1] => Array
    (    
        [templatename] => Health Tips
        [Id] => 13
        [Name] => Drip health tip 2                                 
        [Subject] => Drip health tip 2 subject
        [Body] => Drip health tip 2 body
        [Href] => 
    )

[2] => Array
    (
        [templatename] => Health Tips
        [Id] => 14
        [Name] => Drip health tip 3                                 
        [Subject] => Drip health tip 3 subject
        [Body] => Drip health tip 3 body
        [Href] => 
    )


      )
       4Array
        (
      [0] => Array
    (
        [Id] => 15
        [Name] => Drip financial tip 1                              
        [Subject] => Drip financial tip 1 subject
        [Body] => Drip financial tip 1 body
        [Href] => 
    )

[1] => Array
    (
        [Id] => 16
        [Name] => Drip financial tip 2                              
        [Subject] => Drip financial tip 2 subject
        [Body] => Drip financial tip 2 body
        [Href] => 
    )

[2] => Array
    (
        [Id] => 17
        [Name] => Drip financial tip 3                              
        [Subject] => Drip financial tip 3 subject
        [Body] => Drip financial tip 3 body
        [Href] => 
    )

[templatename] => Financial Tips                                    
  ) 

So i Want result like this below . is it possible or not

      Array
(
      [0] => Array
    (   
        [templatename] => Calendar
        [Id] => 1
        [Name] => Merry Christmas                                   
        [Subject] => Merry Christmas
        [Body] => This is the body
        [Href] => 
    )

[1] => Array
    (
        [templatename] => Calendar
        [Id] => 2
        [Name] => Happy 4th of July                                 
        [Subject] => Happy 4th!
        [Body] => This is the body of a July message
        [Href] => 
    )


)
 3Array
(
   [0] => Array
    (
        [templatename] => Products
        [Id] => 3
        [Name] => New Product 1                                     
        [Subject] => See this new product
        [Body] => This is the body of a one new product
        [Href] =>
    )

[1] => Array
    (
        [Id] => 9
        [templatename] => Products
        [Name] => Drip product 1                                    
        [Subject] => Drip new product 1 subject
        [Body] => Drip new product 1 body
        [Href] => 
    )

[2] => Array
    (
        [templatename] => Products
        [Id] => 10
        [Name] => Drip product 2                                    
        [Subject] => Drip new product 2 subject
        [Body] => Drip new product 2 body
        [Href] => 
    )

[3] => Array
    (
        [templatename] => Products
        [Id] => 11
        [Name] => Drip product 3                                    
        [Subject] => Drip new product 3 subject
        [Body] => Drip new product 3 body
        [Href] => 
    )


)
 5Array
(
   [0] => Array
    (
        [templatename] => Personal Events
        [Id] => 4
        [Name] => Happy Birthday                                    
        [Subject] => Happy Birthday
        [Body] => This is the body of a birthday card
        [Href] => 
    )

[1] => Array
     (    
        [templatename] => Personal Events
        [Id] => 5
        [Name] => Happy Anniversary                                 
        [Subject] => Happy Anniversary
        [Body] => This is the body of a anniversary card
        [Href] => 
    )

[2] => Array
    (
        [templatename] => Personal Events
        [Id] => 6
        [Name] => After Days 0                                      
        [Subject] => We are glad you joined x0 days ago
        [Body] => This is the body of a join x0 days ago card
        [Href] => 
    )

[3] => Array
    (
        [templatename] => Personal Events 
        [Id] => 7
        [Name] => After Days 1                                      
        [Subject] => We are glad you joined x1 days ago
        [Body] => This is the body of a join x1 days ago card
        [Href] => 
    )

[4] => Array
    (
        [templatename] => Personal Events
        [Id] => 8
        [Name] => After Days 2                                      
        [Subject] => We are glad you joined x2 days ago
        [Body] => This is the body of a join x2 days ago card
        [Href] => 
    )


  )
      6Array
         (
[0] => Array
    (

        [templatename] => Health Tips
        [Id] => 12
        [Name] => Drip health tip 1                                 
        [Subject] => Drip health tip 1 subject
        [Body] => Drip health tip 1 body
        [Href] => 
    )

[1] => Array
    (
        [templatename] => Health Tips
        [Id] => 13
        [Name] => Drip health tip 2                                 
        [Subject] => Drip health tip 2 subject
        [Body] => Drip health tip 2 body
        [Href] => 
    )

[2] => Array
    (
        [templatename] => Health Tips
        [Id] => 14
        [Name] => Drip health tip 3                                 
        [Subject] => Drip health tip 3 subject
        [Body] => Drip health tip 3 body
        [Href] => 
    )


      )
     4Array
      (
   [0] => Array
    (
        [templatename] => Financial Tips
        [Id] => 15
        [Name] => Drip financial tip 1                              
        [Subject] => Drip financial tip 1 subject
        [Body] => Drip financial tip 1 body
        [Href] => 
    )

[1] => Array
    (
        [templatename] => Financial Tips
        [Id] => 16
        [Name] => Drip financial tip 2                              
        [Subject] => Drip financial tip 2 subject
        [Body] => Drip financial tip 2 body
        [Href] => 
    )

[2] => Array
    (
        [templatename] => Financial Tips
        [Id] => 17
        [Name] => Drip financial tip 3                              
        [Subject] => Drip financial tip 3 subject
        [Body] => Drip financial tip 3 body
        [Href] => 
    )


  ) 

From what I can see you'll want to change the line

$arr_tampgrop[] =array('Id'=>$value1['Id'],'Name'=>$value1['Name'],'Subject'=>$value1['Subject'],'Body'=>$value1['Body'],'Href'=>$value1['Href']);

to be

$arr_tampgrop[] =array('templatename'=>$tgvalues['Name'],'Id'=>$value1['Id'],'Name'=>$value1['Name'],'Subject'=>$value1['Subject'],'Body'=>$value1['Body'],'Href'=>$value1['Href']);

and remove any line that adds templatename where you dont want it to be, such as

$newarray =array('templatename' =>$tgvalues['Name']);
print_r(array_merge($json1,$newarray));

&

$arraypush = array_push($arr_tampgrop,$arrtempname["templatename"] = $tgvalues['Name']);

The code was adding on the template name at the end of each array instead of as a part of the array. It also prints the array more than necessary so they can be commented out so that the output is easier to read for you.

You can use array_map to accomplish this. It allows you to apply a function to every element of any array. In your case you could add an element to each sub array, by applying array_map to the parent array.

quick example (may need to tweak to your needs)

$newArray = array_map(
     function($subArr) use ($tgvalues) { return $subArr['templatename'] = $tgvalues['Name']; },
     $json1
);

The callback function only has access to the keys and values of the array it is working on. To use a defined variable in the callback use use ($var)

On taking the value of templatename in array like array that I want to

merge with element ie Calendar,health Tips , Products etc.

Then in foreach taking all values of child array and merge both array

$arr_tampgrop[] = array_merge($arrgroup,$value1); 

in print_r(arr_tampgrop); result is obtained.


$arrgroup = array("templatename" => $tgvalues['Name']);
                    $arr_tampgrop =array();
                       foreach($json1 as $key1 => $value1)
                                {
                                $arr_tampgrop[] = array_merge($arrgroup,$value1);
                                }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM