【问题标题】:PHP Merge inner keys of multidimensional arrayPHP合并多维数组的内键
【发布时间】:2015-11-18 17:14:32
【问题描述】:

我正在尝试合并 php 数组的内部键。可能存在创建此数组的循环的某些实例,其中在循环的不同迭代中生成相同的键。

我正在使用这种方法来创建我的大数组:

foreach ( $repeater as $file ) : if ($file) :
    loop stuff here;
    $fileArray[$parentCat][$fileCategoryName][] = $theFile;
endif; endforeach;

$postFiles[] = $fileArray; // inside a bigger loop to collect all data

我正在尝试合并数组构建过程的$parentCat

结果数组示例:

Array (
    [0] => Array (
        [Category Name] => Array (
            [Sub Category] => Array (
                'fieldvalue' => 'fieldvalue',
            ),
        ),   
    ),
    [1] => Array (
        [Category Name] => Array (
            [Different Sub Category] => Array (
                'differentfieldvalue' => 'differentfieldvalue',
            ),
        ),   
    ),      
),

我想合并类别名称,使其看起来像这样:

Array (
    [0] => Array (
        [Category Name] => Array (
            [Sub Category] => Array (
                'fieldvalue' => 'fieldvalue',
            ),
            [Different Sub Category] => Array (
                'differentfieldvalue' => 'differentfieldvalue',
            ),
        ),   
    ),     
),

我尝试过使用 array_merge_recursive、array_merge 和其他一些方法,但没有成功。我在想这很简单,我看多了。

【问题讨论】:

  • 你应该使用 foreach 循环来解决它。你已经试过了吗?
  • 之后我曾尝试将它们与 foreach 循环合并,但没有成功。我在下面将 Alexandre 的答案标记为正确,因为它解决了这个问题 - 非常感谢。

标签: php arrays


【解决方案1】:

array_merge_recursive 是正确的方法。但是不能用数组数组调用,需要用数组列表调用。

尝试以下方法,应该可以解决您的问题:

$mergedPostFiles = call_user_func_array('array_merge_recursive', $postFiles);

【讨论】:

  • 太棒了!太感谢了。我以前从未见过 'call_user_func_array' 函数。
  • 这是一个调用回调的函数。 PHP 中有一整套函数,它们为您提供了操作现有函数的不同方法。当您想将数组用作参数列表时,call_user_func_array 特别有用。看看这些:php.net/manual/en/ref.funchand.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多