我在php中有以下数组:
[0] => Array(
(
[post_id] => 492,
[user_id] => 1
)
[1] => Array(
(
[post_id] => 501,
[user_id] => 1
)
[2] => Array(
(
[post_id] => 568,
[user_id] => 13
)
[3] => Array(
(
[post_id] => 897,
[user_id] => 13
)
我想要做的是删除user_id已经存在的那些。所以结果应该是这样的:
[0] => Array(
(
[post_id] => 492,
[user_id] => 1
)
[1] => Array(
(
[post_id] => 568,
[user_id] => 13
)
我需要一个数组,其中每个user_id只存在一次。
array_unique()不适用于此示例。有什么想法吗?
谢谢!
答案 0 :(得分:1)
您可以随时循环查找唯一值:
$exists = array();
foreach($items as $key => $item) {
if(!in_array($item['user_id'], $exists)) {
$exists[] = $item['user_id'];
} else {
unset($items[$key]);
}
}
这将取消设置$exists
数组中已存在的任何数组。
答案 1 :(得分:0)
这是解决问题的简单功能。
$array = Array();
$array[] = Array('post_id'=>492 , 'user_id' => '1');
$array[] = Array('post_id'=>501 , 'user_id' => '1');
$array[] = Array('post_id'=>568 , 'user_id' => '13');
$array[] = Array('post_id'=>897 , 'user_id' => '13');
print_r($array);
print_r(make_unique_by_key($array,'user_id'));
function make_unique_by_key($m_arr , $key) {
$tmp_arr = array();
foreach ($m_arr as &$item) {
if (!isset($tmp_arr[$item[$key]])) {
$tmp_arr[$item[$key]] =& $item;
}
}
$ret_arr = array_values($tmp_arr);
return $ret_arr;
}