【问题标题】:dynamic array_merge动态数组合并
【发布时间】:2013-02-16 02:24:54
【问题描述】:

我有一个如下所示的数组:

array(2) { 
    [0]=> array(2) { 
        [0]=> string(52) "./app/pictures/uploads/Audi/A1/name1.jpg" 
        [1]=> string(52) "./app/pictures/uploads/Audi/A1/name2.jpg" 
    } 
    [1]=> array(1) { 
        [0]=> string(52) "./app/pictures/uploads/Audi/A3/name3.jpg" 
    } 
} 

上面的数组可以有两个以上的键(0,1)。更多信息,我会浏览一个文件夹。如果有子文件夹,它将每个子文件夹放在一个数组中,并将这些子文件夹的内容/文件放在该数组中。

所以对于我的结果,我需要这样的东西:

array(3) { 
    [0]=> string(52) "./app/pictures/uploads/Audi/A1/name1.jpg" 
    [1]=> string(52) "./app/pictures/uploads/Audi/A1/name2.jpg" 
    [2]=> string(52) "./app/pictures/uploads/Audi/A3/name3.jpg" 
}

我通过array_merge 意识到这一点:

$array = array_merge($tmparray[0],$tmparray[1]);

现在你可以看到这里的键是固定的。但它们应该是动态的。我怎么能意识到这一点?也许是一个循环,但我没有得到线索,$array 变量不会在该循环中每次都被覆盖......

也许现在想清楚为时已晚,但我很快就需要一个解决方案。

【问题讨论】:

    标签: php directory web-crawler array-merge


    【解决方案1】:

    你只需要遍历父数组,然后将子数组合并到一个辅助变量中:

    $result = array();
    foreach ($directories as $array) {
        $result = array_merge($result, $array);
    }
    

    【讨论】:

      【解决方案2】:

      假设 $directories 是您的多级数组,而 $merged 是您想要的。那么:

      $merged = array();
      foreach($directories as $dir) {
         foreach($dir as $file) {
             $merged[] = $file;
         }
      }
      

      【讨论】:

      • 我认为您将 PHP 的 foreach 语法与 Java/Javascript 语法混淆了。
      • 谢谢,你是对的,我是!最近我用的语言太多了,所有的语法都混在一起了。无论如何,更新的例子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2016-07-23
      • 2015-07-24
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多