如何使用php将重复值键合并到一个数组中

问题描述 投票:0回答:1
 $newVar =   Array  
    ( 
        [a] => Array
            (   
                [0] => php    
                [1] => sql
            )
        [b] => Array
            (
                [0] => javascript
                [1] => c
            )
        [c] => Array
            (
                [0] => php
                [1] => sql
            )

        [d] => Array
            (
                [0] => c++
                [1] => java  
            )    
    )

在上面的多维数组中,如何将带有键的重复值合并到一个数组中,如下所示,

$newVar =   Array
    (
        [0] => Array
            (
                [0] => a    
                [1] => c    
            )   
        [1] => Array
            (
                [0] => b
            )
        [2] => Array
            (
                [0] => d
            )    
    )

我在下面尝试过,但只删除了重复的键

$new = array_keys(array_map("unserialize", array_unique(array_map("serialize", $newVar))));
echo "<pre>";
print_r($new);

如何在php ..中将重复键合并到多维数组中?

php
1个回答
0
投票

您可以通过值的串联来创建新的键数组。

$newVar =   [
  'a' => ['php','sql'],
  'b' => ['javascript','c'],
  'c' => ['php','sql'],
  'd' => ['c++','java'],
];

$result = [];
array_walk($newVar, function($val, $key) use(&$result){
  $result[implode("",$val)][] = $key;
});

临时结果如下:

array (
  'phpsql' => 
  array (
    0 => "a",
    1 => "c",
  ),
  'javascriptc' => 
  array (
    0 => "b",
  ),
  'c++java' => 
  array (
    0 => "d",
  ),
)

然后您可以使用array_values()获得所需的结果。

$result = array_values($result);

Try self (Sandbox)

© www.soinside.com 2019 - 2024. All rights reserved.