我有一个新问题,我的脑子在燃烧,我在php中有一个数组
$test = array();
Array
(
[0] => Array
(
[account] => 14319896
[value] => 725.57
[id] => 280
)
[1] => Array
(
[account] => 163157
[value] => -723.57
[id] => 283
)
[2] => Array
(
[account] => 163157
[value] => 723.57
[id] => 284
)
[3] => Array
(
[account] => 161817
[value] => -723.57
[id] => 285
)
)
我需要帐户,他们在这个数组中不止一个,在这个例子中我需要$ test [1] [id]和$ test [2] [id]
你有个主意吗?我现在不知道更多。感谢您的帮助。
答案 0 :(得分:4)
使用帐号作为新数组中的键,计算每个条目,然后获取带有计数>的项目。 1
$dupes = array();
foreach($array as $account) {
++$dupes[$account['account']];
}
$dupes = array_filter($dupes, function($count) { return $count > 1; });
编辑以回答问题下方的评论...
如果您需要重复项的ID(或键),请不要直接存储计数,而是使用其他数组。
$dupes = array();
foreach($array as $key => $account) {
if(!array_key_exists($account, $dupes))
$dupes[$account['account']] = array();
$dupes[$account['account']][] = $account['id']; // or: = $key
}
$dupes = array_filter($dupes, function($ids) { return count($ids) > 1; });
答案 1 :(得分:0)
您应该将您的体系结构更改为具有关联数组,其中键是按如下方式组织的帐号:
Array
(
[14319896] => Array
(
[0]=>Array(
[value] => 725.57
[id] => 280
)
)
[163157] => Array
(
[0]=>Array(
[value] => -723.57
[id] => 283
)
[1]=>Array(
[value] => 723.57
[id] => 284
)
)
[161817] => Array
(
[0]=>Array(
[value] => -723.57
[id] => 285
)
)
)
$dupes = array();
foreach($array as $key => $account) {
$dupes[$account['account']][] = array($account['id'],$account['value']);
}
通过array_filter
:
$dups = array_filter($dupes, function($account){ return count($account)>1;});