如何检测数组中的重复ID?

时间:2012-12-11 15:04:28

标签: php arrays json unique

function getposts($search){
    $url = "http://search.twitter.com/search.json?q=".$search."&include_entities=true&result_type=mixed";
    $value = file_get_contents($url);
    $array = json_decode($value, true);

    foreach($array['results'] as $id){
        $uniquearray[] = array_unique($id);
    }

    for($i=0;$i<count($uniquearray);$i++){
        $output .= $uniquearray[$i]['from_user_id'];
        $output .= "<br />";
    }
    return $output;
}

多数民众赞成我尝试了但它似乎没有工作它只是现在获得最后一篇文章我认为这是因为它过滤了每个用户的所有值,因为它们中的一些来自不同的用户但是另一个键具有相同的值它删除了它们。我只想避免重复的from_user_id键值。

有人可以帮我解决这个问题吗?我正在使用twitter api。并使用此网址:

http://search.twitter.com/search.json?q=apitesttweet&include_entities=true&result_type=mixed

2 个答案:

答案 0 :(得分:1)

我做了类似的回答here

您可以根据自己的问题调整此问题。

function getposts($search){
    $url = "http://search.twitter.com/search.json?q=".$search."&include_entities=true&result_type=mixed";
    $value = file_get_contents($url);
    $array = json_decode($value, true);

    return $array['results'];
}

function arrayUniqueFromKey(array $arr,$key)
{
    $titles = array();$ret = array();
    foreach ($arr as $v) {
        if (!in_array($v[$key],$titles)) {
            $titles[] = $v[$key];
            $ret[] = $v;
        }
    }
    return $ret;
}
$posts = getposts("apitesttweet");
echo count($posts)." Total posts".PHP_EOL; // 3 Total posts

$uniqs = arrayUniqueFromKey($posts, "from_user_id");
echo count($uniqs). " Unique posts".PHP_EOL; // 2 Unique posts

print_r($uniqs);

答案 1 :(得分:0)

它确实有效。我的错误是我试图在循环中过滤它。当我从过滤器中取出array_unique时,它可以工作。

<?php 
function getids($search){
    $url = "http://search.twitter.com/search.json?q=".$search."&include_entities=true&result_type=mixed";
    $value = file_get_contents($url);
    $array = json_decode($value, true);

    $uniquearray = array();
    for($i=0;$i<count($array['results']);$i++){
            $uniquearray[] = $array['results'][$i]['from_user_id'];
    }

    $uniquearray = array_unique($uniquearray);
    return $uniquearray;
}
?>

我把它做得更短更干净,让它只返回一个阵列。