我有一系列看起来像这样的语言: (这个数据是从mysql中提取的,例如存储为:例如字段值:greek,polish)
Array
(
[0] =>
[1] => french
[2] => french, greek
[3] => german
[4] => greek
[5] => greek, polish
[6] => italian
[7] => spanish
[8] => spanish, italian
[9] => spanish, portuguese
)
我尝试使用array_unique($ languages)但输出保持不变。
我认为这是因为逗号。
关于如何拥有独特价值的任何想法? 例如一个:法语,希腊语,德语,波兰语,意大利语,西班牙语和葡萄牙语?
答案 0 :(得分:2)
$data = array_map(function ($item) {
// explode values by "," and trim spaces
return array_map('trim', explode(',', $item));
}, $your_data);
// merge all nested arrays from $data and return unique
return array_unique(
call_user_func_array('array_merge', $data);
);
您的结果将是:
Array
(
[0] =>
[1] => french
[2] => greek
[3] => german
[4] => polish
[5] => italian
[6] => spanish
[7] => portuguese
)
答案 1 :(得分:2)
从输入
创建一个普通数组$res = array();
foreach ($array as $item)
$res = array_merge($res, explode(', ', $item));
然后使用array_unique($res)
答案 2 :(得分:1)
可能的解决方案:
APP
我循环遍历数组中的所有值,并将每个值进一步分成子值。
我使用APP = webapp2.WSGIApplication([
('/sign', GuestBook),
('/.*', MainHandler),
], debug=True)
代替function getUniqueSubValues($array) {
$result = [];
foreach($array as $element) {
$result += preg_split('/\s*,\s*/', $element);
}
return array_unique($result);
}
,否则preg_split('/\s*,\s*/', ...)
之后的空格会被保留,我们将不得不修剪它。
我正在将所有子值合并到结果数组中,最后我将返回该数组的唯一值。