Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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?

share|improve this question
3  
i think you should create your own logic for this –  roullie yesterday
1  
Post your attempts what you have tried so far –  Uchiha yesterday

3 Answers 3

up vote 1 down vote accepted

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
                 )

         )

 )
share|improve this answer
    
must try this @nic –  PHP Worm... 23 hours ago

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);
share|improve this answer

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;
}



?>
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.