0

繰り返し要素のない配列を作成したい。最初は空の配列を作ったのですが、PHPでそんなことをしても意味がありません。より良い方法は?

表1:

Id Name

表 2:

Id Year PROJECT DURATION
1  2012  A      3
1  2012  B      2

データを取得:

$sql = $mysqli->prepare(SELECT Name, 
            Table1.Id, 
            Year
            FROM Table1 JOIN Table2 
            WHERE Table1.Id=Table2.Id
            ORDER BY Id);
$sql->execute();
$result = $sql->get_result();

$Id[]=array();

while($row = $result->fetch_assoc()){

    if (!in_array($row["Id"], $Id)){
        $Id[]=$row["Id"];
        ...
    }
}

year後ですべてのエントリが必要になるためproject、DISTINCT は使用しません。durationデータベースを変更できました。table2で一意のIDを変更して使用するには? 提案をありがとう。

4

2 に答える 2

0

OPは多くの言語で利用可能な概念であるセットデータ構造について知らなかった可能性があるため、正確には重複していないと思いますが、Stack Oveflowには別の質問があります:

PHP のセットの組み込みサポート?

説明すると、集合データ構造は別の要素 (配列など) を保持するデータ型ですが、それらが集合内で一意であることを保証し、通常は挿入、削除、検索の複雑さが低いことを保証します (O(1) または O(log N )、実装によって異なります)。

リンクからわかるように、PHP がセット (およびその複雑さの保証) に最も近いのは、配列自体ではなく、配列のインデックス キーを使用してデータを格納することです。

ただし、複雑さを気にしない場合 (データセットが大きすぎる場合や、挿入/削除/検索を頻繁に実行する場合はお勧めできません) array_unique、リンクにも記載されているように、単に使用できます。

于 2013-04-14T02:02:46.513 に答える
0

この PHP 関数を試してください。

http://php.net/manual/en/function.array-unique.php

PHPを使用したい場合は、必要なことを行うように思えます。それ以外の場合は、@zerkms が既に提案したように、SQL で DISTINCT キーワードを使用します。

于 2013-04-14T01:36:41.873 に答える