php - 将具有相同值的数组元素放入一个元素中并连接它们的键

标签 php arrays associative-array

我正在尝试合并/附加包含相同值的数组的键。

我有一个这样的数组:

$array = array(
           '12' => 'Coats',
           '23' => 'Coats',
           '45' => 'Brushs',
           '5'  => 'others',
           '7'  => 'None',
           '8'  => 'None',
           '9'  => 'None',
         );

预期输出是:

$array = array(
           '12,23' => 'Coats',
           '45' => 'Brushs',
           '5' => 'others',
           '7,8,9' => 'None'
         );

我的尝试:

$subFinalFinal = array();

foreach($array as $key => $val){
    if($skey = array_search($val, $subFinalFinal)){ //duplicate value
        $subFinalFinal[$key.','.$skey] = $val;
    } else {
        $subFinalFinal[$key] = $val;
    }

}

但它并没有给我预期的结果:

Array
(
    [182] => Coats & Jackets
    [211,182] => Coats & Jackets
    [45] => Brushs 
    [5] => others
    [7] => None
    [7,8] => None
    [7,9] => None

)

最佳答案

这应该适合你:

只需遍历所有唯一值,您可以使用 array_unique() 获得这些值,带有一个 foreach 循环。这里是这样的:

Array
(
    [0] => Coats
    [1] => Brushs
    [2] => others
    [3] => None
)

然后获取所有键,这些键保存着 array_keys() 的唯一值.本例中的意思是:

     value     |        key(s)
--------------------------------------
     Coats     |     Array (12, 23)
     Brushs    |     Array (45)
     others    |     Array (5)
     None      |     Array (7, 8, 9)

然后你可以implode()您的键数组转换为字符串并将其用作键。

代码:

<?php

    $array = array('12' => 'Coats', '23' => 'Coats', '45' => 'Brushs', '5' => 'others', '7' => 'None', '8' => 'None', '9' => 'None', );
    $result = [];

    foreach(array_unique($array) as $uniqueValue)
        $result[implode(",", array_keys($array, $uniqueValue))] = $uniqueValue;

    print_r($result);


?>

输出:

Array
(
    [12,23] => Coats
    [45] => Brushs
    [5] => others
    [7,8,9] => None
)

关于php - 将具有相同值的数组元素放入一个元素中并连接它们的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32559272/

相关文章:

php - 可以在 PHP 中强制类型转换吗?

c - C 语言的交互式随机程序

JavaScript 关联数组

php - PHP 中的 Redis : keys "*"

php - 我可以从数据库中获取我的盐,然后在同一个查询中检查密码吗?

Python numpy - DepricationWarning : Passing 1d arrays as data is deprecated

php - 制作多个数组的每个组合,而不重复每个数组中的项目

php - 在 php 中使用 foreach 循环将键 => 值对添加到多维关联数组中很困难

php - 在 Laravel 5.7 中限制登录尝试

C 指向函数内部结构数组的指针/引用