1

mysql テーブルに 2 つの行があります。一部のデータは行全体で複製され、一部は同じ行で複製されます。それぞれの固有の値をエコーアウトしたいと思います。

配列は次のようになります。

Array ( [0] => Array ( [Character1] => Moe Szyslak [Character2] => 0 ) [1] => Array ( [Character1] => Homer Simpson [Character2] => 0 ) [2] => Array ( [Character1] => Homer  Simpson [Character2] => ) [3] => Array ( [Character1] => Homer Simpson [Character2] => Marge Simpson ) 

array_unique などと組み合わせて、さまざまなことを試しforeach'sましたが、近いものは何もないので、私は離れているに違いないと考えています。期待される結果は次のとおりです。 Moe Szyslak Homer Simpson Marge Simpson

編集:クエリはCIモデルにあります(そして、私のdb構造ははるかに優れているはずです):

function getCharacter()
{
$query = $this->db->query("SELECT DISTINCT Character1, Character2 FROM clip");
return $query->result_array();
}
4

2 に答える 2

1

テーブルから「個別の選択*」を実行して、重複を削除できますか?

別のオプションは、配列内の以前の値を確認することです。

for ($i = 0; $i < count($array); $i++)
{
    if ($i == 0 || $array[$i]->Character1 != $array[$i - 1]->Character1)
    {
        echo $array[$i]->Character1 ."<br />";
    }
}
于 2012-10-02T02:18:22.353 に答える
1

を使用すると、同じandDISTINCT Character1, Character2を含む行のみが除外されます。したがって、以下のデータの場合、3 つの行が返されます - 行 2、行 4、および (行 1 と 3) のいずれか Character1Character2

Character1    | Character2
-----------------------------
Moe Szyslak   | Homer Simpson 
Marge Simpson | Moe Szyslak 
Moe Szyslak   | Homer Simpson 
Moe Szyslak   | Marge Simpson 

以下のコードを使用して、一意の値を取得します

$charaters = array();
foreach ($charater_arr as $charater_arr) {
  if (!in_array($charater_arr['Character1'], $charaters)) {
    $charaters[]  = $charater_arr['Character1'];
  }
  if (!in_array($charater_arr['Character1'], $charaters)) {
    $charaters[]  = $charater_arr['Character2'];
  }
}
print_r($charaters);

それ以外の場合は、以下のクエリを試してください。

SELECT Character1 AS character FROM clip 
UNION
SELECT Character2 AS character FROM clip 
于 2012-10-02T05:09:56.747 に答える