【问题标题】:How can merge 3 arrays into a single associative array in PHP如何在 PHP 中将 3 个数组合并为一个关联数组
【发布时间】:2012-11-01 13:10:38
【问题描述】:

我有 3 个数组,每个数组只有 7 个元素。数组是:

filename[]

title[]

description[]

我想为上述数组中的每个数据表达和迭代单个关联数组。 filename 可以是 assoc 数组的键值,但每个文件名都有自己对应的标题和描述。

以下是以下示例:

var_dump($filename)
    string(10) "IMG_1676_3" [1]=> 
    string(10) "IMG_0539_3" [2]=> 
    string(8) "IMG_1942" [3]=> 
    string(8) "IMG_1782" [4]=> 
    string(8) "IMG_2114" [5]=> 
    string(8) "IMG_9759" [6]=> 
    string(8) "IMG_2210" }

var_dump($title)
    string(31) "Lighthouse at Ericeira Portugal" [1]=> 
    string(23) "Gaudi park in Barcelona" [2]=> 
    string(32) "Driving around outside of Lisbon" [3]=> 
    string(16) "Madeira Portugal" [4]=> 
    string(15) "Barcelona Spain" [5]=> 
    string(15) "Lisbon Portugal" [6]=> 
    string(14) "Sailing Lisbon" }

【问题讨论】:

    标签: php arrays associative-array


    【解决方案1】:
    function mergeArrays($filenames, $titles, $descriptions) {
        $result = array();
    
        foreach ( $filenames as $key=>$name ) {
            $result[] = array( 'filename' => $name, 'title' => $titles[$key], 'descriptions' => $descriptions[ $key ] );
        }
    
        return $result;
    }
    

    只需确保将有效输入传递给函数,或添加一些额外的检查。这就是你要找的吗?

    【讨论】:

    • 如何调用$result[0]我的数据字段的标题或描述?
    • $result[0]['title']$result[0]['description']
    【解决方案2】:

    如果您的数组键对于所有 3 个数组都相同,那么执行您所要求的更好的方法是使用 foreach 创建一个新数组,其中所有键(文件名、标题、描述)都在同一个键中:

    <?php
    foreach($filename as $key => $file)
    {
        $files[$key]['filename'] = $file;
        $files[$key]['title'] = $title[$key];
        $files[$key]['description'] = $description[$key];
    }
    ?>
    

    【讨论】:

    • 我真的很喜欢你的逻辑,我认为这应该得到最佳答案。
    【解决方案3】:

    试试这个

    $result = array_combine($filename, array_map(null, $title, $description));
    var_dump($result);
    

    或者如果您需要内部数组是关联的。

    $result = array_combine($filename, 
      array_map(function($t, $d) { 
          return array('title'=>$t, 'description'=>$d); 
        }, $title, $description
      )
    );
    

    如果只想组合三个数组

    $result = array_map(function($f, $t, $d) { 
        return array('filename'=>$f, 'title'=>$t, 'description'=>$d); 
      }, $filename, $title, $description
    );
    

    【讨论】:

      【解决方案4】:
      $array1 = array("orange", "apple", "grape"); 
      $array2 = array("peach", 88, "plumb");
      $array3 = array("lemon", 342); 
      $newArray = array_merge($array1, $array2, $array3);
      foreach ($newArray as $key => $value) {
          echo "$key - <strong>$value</strong> <br />"; 
      } 
      

      【讨论】:

      • 此方案不符合题中要求。
      猜你喜欢
      • 2012-10-21
      • 2013-06-19
      • 1970-01-01
      • 2018-04-27
      • 2018-04-18
      • 2016-10-19
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多