2012-12-11 59 views
1
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鍵值。如何檢測數組中的重複ID?

有人可以幫我解決這個問題嗎?我正在使用twitter api。並使用該網址:

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

+0

'array_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); 
+0

啊,看起來真棒太謝謝你了! –

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; 
} 
?> 

我做到了縮短和清潔,並使其只返回一個數組。