标签: array-merge

如何通过仅接管第二个数组中与第一个数组具有相同键的值来合并两个数组?

我想将两个数组相互合并:

$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
Run Code Online (Sandbox Code Playgroud)

合并应包括其中所有元素的$filtered所有元素以及$changed具有相应键的所有元素$filtered:

$merged = array(1 => 'a', 3 => 'c*');
Run Code Online (Sandbox Code Playgroud)

array_merge($filtered, $changed)将增加的附加键$changed进入$filtered为好.所以它并不适合.

我知道我可以$keys = array_intersect_key($filtered, $changed)用来获取两个数组中存在的密钥,这已经是工作的一半.

但是我想知道是否有任何(本机)函数可以将$changed数组减少到具有$keys指定的数组array_intersect_key?我知道我可以使用array_filter回调函数并在$keys其中进行检查,但是可能还有一些其他纯粹的本机函数只能从一个可以指定键的数组中提取那些元素?

我问,因为本机函数通常比array_filter回调快得多.

php arrays filter array-merge array-key

8
推荐指数
1
解决办法
4918
查看次数

PHP:多维数组合并递归

我需要合并这两个数组:

$ar1 = array("color" => array("red", "green"), "aa");
$ar2 = array("color" => array( "green", "blue"), "bb");
$result = array_merge_recursive($ar1, $ar2);
Run Code Online (Sandbox Code Playgroud)

预期产量:

[
    'color' => [
        (int) 0 => 'red',
        (int) 1 => 'green',
        (int) 3 => 'blue'
    ],
    (int) 0 => 'aa',
    (int) 1 => 'bb'
]
Run Code Online (Sandbox Code Playgroud)

但它输出:

[
    'color' => [
        (int) 0 => 'red',
        (int) 1 => 'green',
        (int) 2 => 'green', (!)
        (int) 3 => 'blue'
    ],
    (int) 0 => 'aa',
    (int) 1 => 'bb'
]
Run Code Online (Sandbox Code Playgroud)

我正在寻找最简单的方法,我的数组输入不会比那些例子更深.

php arrays multidimensional-array array-merge

8
推荐指数
2
解决办法
1万
查看次数

array_merge vs array_value用于重置数组索引

我有1个数组,我想重新索引.我发现两个array_valuesarray_merge函数都可以完成这项工作(我不需要2个数组来使array_merge函数工作).

对于非常大的阵列来说哪个更快?我会对此进行基准测试,但我不知道如何也没有大阵列.

在重新索引之前:

Array
(
    [0] => AB
    [4] => EA
    [6] => FA
    [9] => DA
    [10] => AF
)
Run Code Online (Sandbox Code Playgroud)

重新索引后:

Array
(
    [0] => AB
    [1] => EA
    [2] => FA
    [3] => DA
    [4] => AF
)
Run Code Online (Sandbox Code Playgroud)

php arrays indexing array-merge

7
推荐指数
1
解决办法
2679
查看次数

PHP array_replace_recursive如果是标量,则array_merge_recursive如果是数组

我有一些默认配置,以及一些可配置的特定配置.我需要将特定配置合并到默认配置中.

  • 如果特定配置选项不存在,将使用默认选项.
  • value是标量的情况下,应该应用特定配置
  • 如果value是标量数组,则应合并数组并应用array_unique.
  • 在该情况下value是一个关联数组,我们需要应用上面scalarscalar_array规则.

例:

$defaultConfigs = [
   'scalar1' => 1,
   'scalar2' => "Apple",
   'array_scalar' => [3,4,5],
   'array_associative' => [
      'scalar' => 1,
      'array_scalar' => [1,2,3],
      'array_associative' => [
          ...
      ]
   ],
];

$specificConfigs = [
   'scalar1' => "A",                          
   'array_scalar' => [3,4,5],   
   'array_associative' => [
      'scalar' => 1,
      'array_scalar' => [1,2,3],
      'array_associative' => [
          ...
      ]
   ],
];
Run Code Online (Sandbox Code Playgroud)

预期产出:

$expectedConfigs = [
   'scalar1' => "A",                  // Overridden
   'scalar2' => …
Run Code Online (Sandbox Code Playgroud)

php arrays recursion scalar array-merge

7
推荐指数
1
解决办法
905
查看次数

合并多个数组,然后按数组值计数排序

请帮助我,我需要合并多个数组,然后按数组值计数排序.以下是问题:

$array1 = array("abc", "def", "ghi", "jkl", "mno");
$array2 = array("mno", "jkl", "mno", "ghi", "pqr", "stu");
$array3 = array_merge($array1, $array2);
$array4 = ???

print_r($array4);
Run Code Online (Sandbox Code Playgroud)

我想要这样的回报$array4:

Array
(
[0] => mno
[1] => ghi
[2] => jkl
[3] => abc
[4] => def
[5] => pqr
[6] => stu
)
Run Code Online (Sandbox Code Playgroud)

php arrays sorting merge array-merge

6
推荐指数
1
解决办法
1891
查看次数

按索引合并两个数组

好吧,如果觉得这应该是很简单的,并通过一个函数来完成类似array_merge()array_merge_recursive,但我不能完全弄清楚.我有两个简单的数组,如下面的(简化)示例.我只是想根据它们的索引将它们合并到一个数组中.

$ array 1:

Array ( 
  [0] => Array ( 
        [ID] => 201 
        [latLng] => 45.5234515, -122.6762071 
  )  
  [1] => Array ( 
        [ID] => 199 
        [latLng] => 37.7931446, -122.39466520000002 
  )
) 
Run Code Online (Sandbox Code Playgroud)

等等…

$ array2:

Array ( 
  [0] => Array ( 
        [distance] => 1000 
        [time] => 10 
  )  
  [1] => Array ( 
        [distance] => 1500 
        [time] => 15 
  )
) 
Run Code Online (Sandbox Code Playgroud)

$ desiredResult:

Array ( 
  [0] => Array ( 
        [ID] => 201 
        [latLng] => 45.5234515, -122.6762071 
        [distance] => …
Run Code Online (Sandbox Code Playgroud)

php arrays array-merge

6
推荐指数
1
解决办法
2万
查看次数

array_merge更改键

我有以下数组:

$arr = array(6 => 'Somedata', 7 => 'Somedata1', 8 => 'Somedata2');
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用时array_merge( (array) "Select the data", $arr);,它确实将数组键更改为:

Array
(
    [0] => Not specified
    [1] => Somedata
    [2] => Somedata1
    [3] => Somedata2
)
Run Code Online (Sandbox Code Playgroud)

是否可以跳过array_merge关键的预翻译,所以输出看起来像这样?

Array
(
    [0] => Not specified
    [6] => Somedata
    [7] => Somedata1
    [8] => Somedata2
)
Run Code Online (Sandbox Code Playgroud)

php arrays array-merge

6
推荐指数
1
解决办法
1776
查看次数

我想在php中将子数组添加到一个单独的数组中

我有这样的数组.........

Array
(
    [0] => Array
        (
            [0] => rose
            [1] => monkey
            [2] => donkey
        )

    [1] => Array
        (
            [0] => daisy
            [1] => monkey
            [2] => donkey
        )

    [2] => Array
        (
            [0] => orchid
            [1] => monkey
            [2] => donkey
        )

)
Run Code Online (Sandbox Code Playgroud)

我想要这样.........

Array
(
    [0] => rose
    [1] => monkey
    [2] => donkey
    [3] => daisy
    [4] => monkey
    [5] => donkey
    [6] => orchid
    [7] => monkey
    [8] => donkey
)
Run Code Online (Sandbox Code Playgroud)

....我使用了数组合并但它没有工作,因为我的数组生成动态,每次显示不同的数组.问题是我无法在array_merge()函数中动态传递数组.它只接受数组的手动条目而不接受任何其他变量.function只接受数组.

它像这样工作......

$total_data …
Run Code Online (Sandbox Code Playgroud)

php arrays array-merge

6
推荐指数
1
解决办法
5797
查看次数

根据键的值合并数组

我有两个具有id键的数组数组,我想根据该数组的键和键值将数据合并在一起.数据看起来像:

    $color = [
        ['id' => 1, 'color' => 'red'],
        ['id' => 2, 'color' => 'green'],
        ['id' => 3, 'color' => 'blue'],
    ];

    $size = [
        ['id' => 1, 'size' => 'SM'],
        ['id' => 2, 'size' => 'XL'],
        ['id' => 3, 'size' => 'MD'],
        ['id' => 4, 'size' => 'LG'],
    ];

    $combined = [
        ['id' => 1, 'color' => 'red', 'size' => 'SM'],
        ['id' => 2, 'color' => 'green', 'size' => 'XL'],
        ['id' => 3, 'color' => 'blue', …
Run Code Online (Sandbox Code Playgroud)

php arrays collections array-merge laravel

6
推荐指数
2
解决办法
2168
查看次数

合并数组内的数组

我有2个数组要合并.第一个数组是多维的,第二个数组是单个数组:

$a = array(
    array('id'=>'1', 'name'=>'Mike'),
    array('id'=>'2', 'name'=>'Lina'),
);

$b = array('id'=>'3', 'name'=>'Niken');
Run Code Online (Sandbox Code Playgroud)

如何合并2个数组以具有相同的数组深度?

php arrays multidimensional-array array-merge

6
推荐指数
1
解决办法
182
查看次数