PHP如何删除多维数组中的重复值并合并其他值 [英] PHP How to remove duplicate value in multidimensional array and merge others
本文介绍了PHP如何删除多维数组中的重复值并合并其他值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经花了几个小时解决这个问题. 我有一个包含字体详细信息的多维数组,我想将其合并以向Google Web字体发送一个请求. (每个数组描述不同html标签的字体详细信息)有人可以帮助我吗?
I've spend couple of hours on this problem. I have a multidimension array with fonts details and I want to merge it to send one request to google web fonts. (Each array describe font details of different html tag) Anyone can help me with that?
输入:
Array
(
[1] => Array
(
[family] => Abril Fatface
[weight] => regular
[charset] => latin,latin-ext
)
[2] => Array
(
[family] => Akronim
[weight] => regular
[charset] => latin
)
[3] => Array
(
[family] => Akronim
[weight] => regular, bold
[charset] => latin
)
[4] => Array
(
[family] => Akronim
[weight] => regular
[charset] => latin, latin-ext
)
[5] => Array
(
[family] => Acme
[weight] => regular
[charset] => latin
)
)
输出:
Array
[0] (
[family] => Abril Fatface
[weight] => regular
[charset] => latin,latin-ext
)
[1] (
[family] => Akronim
[weight] => regular, bold
[charset] => latin,latin-ext
)
[2] (
[family] => Acme
[weight] => regular
[charset] => latin
)
推荐答案
功能
function font_merge_unique($col, $arr, $exj)
{
$test = array();
foreach($arr AS $key => $row)
{
$test[$key] = strtolower(preg_replace('/[^A-Za-z0-9]/', '', $row[$col]));
foreach($exj AS $index)
{
$arr[$key][$index] = array_map('trim', (is_array($arr[$key][$index]) ? $arr[$key][$index] : explode(',', $arr[$key][$index])));
}
}
$unique = array_unique($test);
$dupes = array_diff_key($test, $unique);
$list = array();
foreach($unique AS $key => $n)
{
$list[$key] = $arr[$key];
}
foreach($dupes AS $di => $row)
{
$index = array_search($row, $unique);
foreach($exj AS $merge)
{
$list[$index][$merge] += $arr[$di][$merge];
}
}
foreach($list AS $index => $row)
{
foreach($exj AS $merge)
{
$list[$index][$merge] = implode(',', $list[$index][$merge]);
}
}
return array_values($list);
}
用法
- 参数1(字符串)要唯一的值的键名.
- 要处理的参数2(阵列).
-
参数3(数组)处理的数组中的键列表,以使(字符串|数组)值成为唯一的逗号分隔的字符串.
- Param 1 (String) Key name of value to make unique.
- Param 2 (Array) To Process.
Param 3 (Array) List of keys in processed array to make (String|Array) values a unique comma separated String.
font_merge_unique('family', $array, array('weight','charset'))
结果
Array
(
[0] => Array
(
[family] => Abril Fatface
[weight] => regular
[charset] => latin,latin-ext
)
[1] => Array
(
[family] => Akronim
[weight] => regular,bold
[charset] => latin,latin-ext
)
[2] => Array
(
[family] => Acme
[weight] => regular
[charset] => latin
)
)
这篇关于PHP如何删除多维数组中的重复值并合并其他值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文