2013-07-22 50 views
0

當使用stristr按關鍵字過濾JSON時,我總是收到重複條目(確切地說是4)。我的代碼示例如下:由stristr生成的重複條目

$keywords = array('small','medium','large'); 

foreach($keywords as $keyword) { 
foreach ($data as &posts) { 
    if(stristr($posts['message'],$keyword) !== FALSE) { 
     print_r($posts); 
     } 
     } 
     } 

當我做下面有零次重複:

foreach ($data as &posts) { 
    print_r($posts); 
    } 

我試圖array_uniq,但沒有成功。有人可以請指點我正確的方向嗎?有沒有更好的方法來排序JSON?

+0

改變這樣的:如果(stristr($帖[ 'message'],$ keyword)!== FALSE){to this:if(stristr($ posts ['message'],$ keywords)!== FALSE){ 可能是? – Maximus2012

+0

你的'$關鍵字'在最後缺少's'。確保你使用的是相同的變量。 – mavili

+0

我對Maximus2012和mavili表示歉意。你對$關鍵字都是正確的。在這個例子中,我犯了一個錯誤,就是沒有包含一行代碼。 – user2559857

回答

0

重複的帖子是否匹配多個關鍵字?如果是這樣,他們將打印每場比賽。

如果你想每場比賽通過帖子先打印每個職位只有一次,循環,並退出檢查後,當一個關鍵字找到匹配:

foreach ($data as &posts) { 
    foreach($keywords as $keyword) { 
    if(stristr($posts['message'],$keyword) !== FALSE) { 
     print_r($posts); 
     break; 
    } 
    } 
} 
+0

這工作,但仍然有一些重複(2倍)。最初我有4個副本,現在只有1個額外的集合。 – user2559857

+0

很難說沒有看到數據更多。不能在這裏複製。 –

+0

終於搞定了!謝謝Paul Roub,mavili和Maximus2012 !!我在循環之後添加了'break;'然後執行了'array_uniq'函數並且它工作正常! – user2559857