我正在尝试合并/附加包含相同值的数组的键。
我有一个这样的数组:
$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/