1

I need a new array to merge all category_name with same exercise_name, i.e. it would be:

Array
    (
[0] => stdClass Object
    (

        [exercise_name] => Hang Clean
        [category_name] => Heavy,Pull,Core
    )

[1] => stdClass Object
    (

        [exercise_name] => Ice Skaters
        [category_name] => Ground,Lower,Plyometrics
    )

[2] => stdClass Object
    (

        [exercise_name] => Ice Skaters
        [category_name] => Basketball,Sport Specific
    )

)

Output :

Array
(
    [0] => stdClass Object
        (
            [exercise_name] => Hang Clean
            [multiple_category_name] => Array
                (
                    [0] => Heavy,Pull,Core
                )

        )

    [1] => stdClass Object
        (
            [exercise_name] => Ice Skaters
            [multiple_category_name] => Array
                (
                    [0] => Ground,Lower,Plyometrics
                    [1] => Basketball,Sport Specific
                )

        )

)

What is the best way to merge all category_name with same exercise_name?

Any solution?

2
  • 3
    i think you should create your own logic for this Commented Jun 2, 2015 at 6:33
  • 1
    Post your attempts what you have tried so far Commented Jun 2, 2015 at 6:35

3 Answers 3

1

This may help you

 [akshay@localhost tmp]$ cat test.php
 <?php 

 $array= array(
               (object)array("exercise_name" => "Hang Clean","category_name" => "Heavy,Pull,Core"),
               (object)array("exercise_name" => "Ice Skaters","category_name" => "Ground,Lower,Plyometrics"),
               (object)array("exercise_name" => "Ice Skaters","category_name" => "Basketball,Sport Specific")
              );


 function simple_merge($array)
 {

    foreach($array as $k)
    {
       if(isset($output[$k->exercise_name]))
       { 
           array_push($output[$k->exercise_name]->multiple_category_name,$k->category_name);    
       }else
       {    
           $k->multiple_category_name  = array($k->category_name);
           unset($k->category_name);
           $output[$k->exercise_name]  = $k;
       }        
    }

    return array_values($output);
 }


 // Input 
 print_r($array);

 // Output
 print_r(simple_merge($array));

 ?>

Output

 [akshay@localhost tmp]$ php test.php

 Array
 (
     [0] => stdClass Object
         (
             [exercise_name] => Hang Clean
             [category_name] => Heavy,Pull,Core
         )

     [1] => stdClass Object
         (
             [exercise_name] => Ice Skaters
             [category_name] => Ground,Lower,Plyometrics
         )

     [2] => stdClass Object
         (
             [exercise_name] => Ice Skaters
             [category_name] => Basketball,Sport Specific
         )

 )
 Array
 (
     [0] => stdClass Object
         (
             [exercise_name] => Hang Clean
             [multiple_category_name] => Array
                 (
                     [0] => Heavy,Pull,Core
                 )

         )

     [1] => stdClass Object
         (
             [exercise_name] => Ice Skaters
             [multiple_category_name] => Array
                 (
                     [0] => Ground,Lower,Plyometrics
                     [1] => Basketball,Sport Specific
                 )

         )

 )
Sign up to request clarification or add additional context in comments.

Comments

0

Try this one,

$new = array();
foreach($obj as $key=>$val {
   if($key == "exercise_name") {
     $key1 = $val;
   }

   if($key == "category_name") {
     $new[$key1] = $val;
   }


}

print_r($new);

Comments

0

Try this function it will surly help you:

<?php
$obj = array(
        0 => (object)array(
                'exercise_name' => 'Hang Clean',
                'category_name' => 'Heavy,Pull,Core',
                ),
        1 => (object)array(
                'exercise_name' => 'Ice Skaters',
                'category_name' => 'Ground,Lower,Plyometrics',
                ),
        2 => (object)array(
                'exercise_name' => 'Ice Skaters',
                'category_name' => 'Basketball,Sport Specific',
                )

        );


/*-----------------------------------------------------------*/

        echo '<pre>';
        print_r(funcName($obj));

/*-----------------------------------------------------------*/



function funcName($obj) {   
        $results = array();
        foreach($obj as  $obj1){
            if(empty($results)){
                $results[] = (object)array(
                                'exercise_name' => $obj1->exercise_name,
                                'multiple_category_name' => array(
                                                        $obj1->category_name,
                                                    ),
                            );
            }else{
                $check = 0;
                foreach ($results as $key =>$result ){

                    if(trim($result->exercise_name) == trim($obj1->exercise_name)){
                        $check = 1;
                        $results[$key]->multiple_category_name[] = $obj1->category_name;
                        continue;
                    }
                }
                if($check == 0){
                    $results[] = (object)array(
                        'exercise_name' => $obj1->exercise_name,
                        'multiple_category_name' => array(
                                                $obj1->category_name,
                                            ),
                    );              
                }
            }       
        } 
        return $results;
}



?>

Comments

Your Answer

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.