【问题标题】:PHP : merging array with same elementPHP:合并具有相同元素的数组
【发布时间】:2015-06-02 06:30:26
【问题描述】:

我需要一个新数组来将所有 category_name 与相同的 exercise_name 合并,即:

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
                )

        )

)

将所有 category_name 与相同的 exercise_name 合并的最佳方法是什么?

有什么办法吗?

【问题讨论】:

  • 我认为你应该为此创建自己的逻辑
  • 发布你迄今为止所尝试的尝试

标签: php arrays multidimensional-array array-merge


【解决方案1】:

这可能对你有帮助

 [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));

 ?>

输出

 [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
                 )

         )

 )

【讨论】:

    【解决方案2】:

    试试这个,

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

    【讨论】:

      【解决方案3】:

      试试这个功能,它会对你有帮助:

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

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多