【发布时间】:2017-06-01 16:03:29
【问题描述】:
使用哪种算法来搜索数组中的唯一元素?
例如数组是:
$arr = [
["date" => "2015/04/05",
"country" => "UK",
"number" => 3],
["date" => "2015/04/05",
"country" => "UK",
"number" => 3],
["date" => "2015/04/05",
"country" => "UK",
"number" => 3],
["date" => "2015/04/05",
"country" => "UK",
"number" => 4],
];
那么,我需要用唯一的number 计算多少元素?
结果我应该得到以下结构:
["UK" => array("total" => "2")]
其中total 是数组中唯一number 的数量。
我试过了:
$output = [];
foreach ($arr as $k => $value) {
$output[
$value[
"country"
]][$value["date"]][$value["number"]
] = true;
}
foreach ($output as $k => $v) {
foreach ($v as $c => $t) {
$arr[$k][$c] = count($t);
}
}
但是这段代码看起来很糟糕,有循环。另外我认为有一个简单的算法可以解决这些问题。
【问题讨论】:
-
如果代码有效,也许这更适合代码审查(?)
-
代码有效,但我不喜欢它
-
我投票结束这个问题作为离题,因为它更适合在另一个网站上,例如codereview.stackexchange.com