2016-08-04 21 views
2

私は以下のようにMySQL、PHPコードを持っています。 PHPのjsonから重複を削除するには

$sql = "SELECT * FROM shipschedule WHERE ship_date BETWEEN '2016-08-01' AND '2016-8-31'"; 
$result = $mysqli->query($sql); 
$e = array(); 

while($r = $result->fetch_array()) { 
    $rows = array(); 
    $rows['title'] = $r['title']; 
    $rows['start'] = $r['ship_date']; 
    array_push($e, $rows); 
} 
echo json_encode($e); 

上記のPHPコードエコー

[{"title":"111","start":"2016-08-10"}, 
{"title":"111","start":"2016-08-10"}, 
{"title":"111","start":"2016-08-10"}, 
{"title":"222","start":"2016-08-17"}, 
{"title":"222","start":"2016-08-17"}, 
{"title":"222","start":"2016-08-16"}] 

私の質問は、私が代わりに従って、上記のようにエコーができる方法です。重複した開始日がタイトルで削除されることをご確認ください。 111

[{"title":"111","start":"2016-08-10"}, 
{"title":"222","start":"2016-08-17"}, 
{"title":"222","start":"2016-08-16"}] 

タイトルが同じ3開始日を持っている、と私は

{"title":"111","start":"2016-08-10"}, 

タイトル222が同じ2開始日を持っている、と私は

{"title":"222","start":"2016-08-17"}, 
{"title":"222","start":"2016-08-16"}] 
のようにそれを表示する必要があるようにそれを表示する必要があります
+1

'DISTINCT'を選択 - クエリのリターンから重複した結果を削除します。 – ArtisticPhoenix

+3

なぜPHPでですか?あなたは質問をしています。あなたがPHPで再びそれを削除するためだけにデータを取得する時間を浪費しないようにクエリが二重引用符を排除するようにしてください。 –

+0

あなたは正しいです。どういうわけか私はPHPに焦点を当て、mysqlを見落としました。 – librium

答えて

2

あなたが受信重複を防ぐため、そしてあなたのクエリを調整することにより、不要なデータを要求して減らすことができます。

SELECT DISTINCT title, start FROM ...

+0

速い返答をありがとう。できます。 – librium

2

MySQLから正しい(一意の)データを取得するほうがはるかに簡単です(おそらくは速くなります)。これはdistinct修飾子を達成することができます:

SELECT DISTINCT title, start 
FROM shipschedule 
WHERE ship_date BETWEEN '2016-08-01' AND '2016-8-31' 
+0

ありがとうございます。これもうまくいく。 – librium

関連する問題