【问题标题】:PHP use array_merge with N arraysPHP 使用带有 N 个数组的 array_merge
【发布时间】:2020-09-02 11:07:37
【问题描述】:

我想将几个 (n) 表组合成一个大表。例子:

$tab1 = array("test0","test1");
$tab2 = array("test2","test3");
$tab3 = array("tes..","....");

但例如有 10 张桌子。而不是写

$result = array_merge($tab1, $tab2, $tab3 --> $tab10);

算法应该自己做,但我承认我迷路了。我以为我会递归地做。

如果有人知道怎么做,谢谢

【问题讨论】:

  • 那么在尝试将它们全部合并为一个之前,您是否知道这些数组 (不是表) 被调用了多少个和/或什么?
  • 对我来说它看起来像她的数组([0] => array([0]=>[0]="test"[1]= test2") array[1] => array( [0] =>“test3”[1] =>“test4”,这用于 10 个数组。我希望它是 array[0]=test1 [2] = test2 [3] = test3 ..... . 在一个大数组中

标签: php arrays merge


【解决方案1】:

我会从不使用数字变量名开始: 相反,我使用了一个数组:

<?php
$tab[] = array("test0","test1");
$tab[] = array("test2","test3");
$tab[] = array("test4","test3");
?>

下一步:你可以遍历它们进行合并

<?php 
$result = array();
for($i=0;$i<count($tab);$i++) {
   $result = array_merge($result, $tab[i]);
 }  
 ?>

【讨论】:

  • 你不需要循环,只需使用...$tab
  • 或使用 foreach 循环。我使用“For”,因为我的第一个示例需要它。 ...$ 选项卡更好。但是它将从哪个 PHP 版本开始工作?编辑:PHP 5.6(相当长的一段时间)
【解决方案2】:

使用 array_merge() 和一个主数组中的所有数组可以使用参数解包(或 splat 运算符)......

$tab[] = array("test0","test1");
$tab[] = array("test2","test3");
$tab[] = array("test4","test3");

print_r(array_merge(...$tab));

【讨论】:

    【解决方案3】:

    不要引入你不“使用”的变量:

    $tables = [];
    $tables[] = ["test0", "test1"];
    $tables[] = ["test2", "test3"];
    $tables[] = ["tes..", "...."];
    $mergedTables = [];
    foreach ($tables as $table) {
        $mergedTables = array_merge($tables, $table);
    }
    

    【讨论】:

      【解决方案4】:

      想到一件事,它不是最漂亮的,但它确实有效。无需更改数组名称。

      它检查$$tab,它基本上是一个以'tab' 开头并以我们递增的$i 结尾的变量。然后将它们一一合并。

      <?php
      
      $tab1 = array("test0", "test1");
      $tab2 = array("test2", "test3");
      $tab3 = array("tes..", "....");
      
      $i = 1;
      
      $tab = 'tab' . $i;
      
      $data = [];
      
      while (isset($$tab)) {
          $data = array_merge($data, $$tab);
          $i++;
          $tab = 'tab' . $i;
      }
      
      print_r($data);
      

      这是输出:

      Array ( [0] => test0 [1] => test1 [2] => test2 [3] => test3 [4] => tes.. [5] => .... )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        • 1970-01-01
        • 2011-04-07
        相关资源
        最近更新 更多