【问题标题】:How can I detect duplicate ids in an array?如何检测数组中的重复 ID?
【发布时间】:2012-12-11 15:04:28
【问题描述】:
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 键值。

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

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

【问题讨论】:

  • array_unique() 不会过滤任何内容。它将返回相同的数组。在决赛中,您将看到相同的数据。

标签: php arrays json unique


【解决方案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);

【讨论】:

    【解决方案2】:

    它确实有效。我的错误是我试图在循环本身中过滤它。当我将 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;
    }
    ?>
    

    我让它更短更简洁,并让它只返回一个数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-13
      • 2020-02-11
      • 1970-01-01
      • 2018-05-25
      • 2016-12-19
      • 2014-08-25
      • 1970-01-01
      相关资源
      最近更新 更多