【问题标题】:Merging 3 arrays in PHP在 PHP 中合并 3 个数组
【发布时间】:2017-12-23 05:05:41
【问题描述】:

我有 3 个数组,如下所示。

$array1 = Array
(
    [0] => 05/01
    [1] => 05/02
)

$array2 =Array
(
    [0] => ED
    [1] => P
)

$array3 =Array
(
    [0] => Mon
    [1] => Tue

)

我想将这 3 个数组合并为以下$result_array。我写了如下代码。但它给出了一个空数组。

$result_array =Array
(
    [0] => Array
        (
            [0] => 05/01
            [1] => ED
            [2] => Mon
        )
    [1] => Array
        (
            [0] => 05/02
            [1] => P
            [2] => Tue
        )
)

代码:

for($z=0; $z<count($array1); $z++){
    $all_array[$z][] = array_merge($array1[$z],$array2[$z] );
    $all_array2[$z] = array_merge($all_array[$z],$array3[$z] );
}

请帮我做这件事。

【问题讨论】:

标签: php arrays array-merge


【解决方案1】:

只需对第一个数组进行 foreach 并将索引用作其他数组的键。

foreach ( $array1 as $idx => $val ) {
    $all_array[] = [ $val, $array2[$idx], $array3[$idx] ];
}

请记住,这仅在所有 3 个数组长度相同时才有效,您可能需要先检查一下

【讨论】:

  • 这样做的好方法 RiggsFolly。
【解决方案2】:

您可以简单地使用 foreach 循环遍历第一个数组,然后访问相应的数组并将结果组合成一个大数组。这仅在数组长度相同时才有效,因此值得在之前检查以停止任何错误。像这样的:

<?php
$arr1 = ['05/01', '05/02'];
$arr2 = ['ED', 'P'];
$arr3 = ['Mon', 'Tue'];

$combined = [];
if (count($arr1) != count($arr2) || count($arr1) != count($arr3))
  die("Array lengths do not match!");

foreach ($arr1 as $key => $val) {
    $combined[] = [$val, $arr2[$key], $arr3[$key]];
}

var_dump($combined);

你可以在这里看到这个工作的 eval.in - https://eval.in/833893

【讨论】:

    【解决方案3】:

    创建一个示例数组并使用相应的键推送到每个数组值

    $sample = array();
    for($z=0; $z<count($array1); $z++){
        $sample[]=array($array1[$z],$array2[$z],$array3[$z]);
    }
    print_r($sample);
    

    输出是

    Array ( [0] => Array ( 
                   [0] => 05/01 
                   [1] => ED 
                   [2] => Mon 
            ) 
            [1] => Array ( 
                   [0] => 05/02 
                   [1] => P 
                   [2] => Tue 
            ) 
    )
    

    【讨论】:

      【解决方案4】:

      这适用于 n 个数组和数组的动态长度

      function mergeArrays(...$arrays)
      {
      
          $length = count($arrays[0]);
          $result = [];
          for ($i=0;$i<$length;$i++)
          {
              $temp = [];
              foreach ($arrays as $array)
                  $temp[] = $array[$i];
      
              $result[] = $temp;
          }
      
          return $result;
      
      }
      

      $x = mergeArrays(['05/01' , '05/02'] , ['ED' , 'P'] , ['Mon' , 'Tus']);
      $y = mergeArrays(['05/01' , '05/02' , 'X'] , ['ED' , 'P' , 'Y'] , ['Mon' , 'Tus' , 'Z'] , ['A' , 'B' , 'C']);
      
      var_dump($x);
      var_dump($y);
      

      【讨论】:

        【解决方案5】:
        function merge($file_name, $titles, $description)
         {
            $result = array();
            foreach($file_name as $key=>$name )
            {
              $result[] = array( 'file_name' => $name, 'title' => $titles[$key], 
             'description' => $description[ $key ] );
            }
            return $result;
        }
        

        【讨论】:

          【解决方案6】:
          $array1 = Array
          (
              '05/01',
              '05/02'
          );
          
              $array2 = Array
          (
              'ED',
              'P'
          );
          
          $array3 =Array
          (
              'Mon',
              'Tue'
          );
          $result_array = array();
          foreach ($array1 as $key=>$val)
          {
              $result_array[$key] = array($array1[$key],$array2[$key],$array3[$key]);
          }
          echo "<PRE>"; print_r($result_array);
          

          【讨论】:

            猜你喜欢
            • 2013-08-28
            • 2020-04-28
            • 2016-03-08
            • 2012-11-01
            • 2022-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-22
            相关资源
            最近更新 更多