0

いくつかの値を格納するために多次元配列を作成し、重複を削除することができました。

私が今やりたいのは、for または foreach ループを構築して、[0]、[1] などのキーでサブ配列の値をエコーすることです。Print_r は必要なデータを正確に表示しますが、セットごとにいくつかのフォーム ボタンを作成するために反復する必要があります。

次のように、多次元配列から一意のエントリを生成するために見つけた関数を使用します。

function multi_unique($array) {
    foreach ($array as $k=>$na)
        $new[$k] = serialize($na);
    $uniq = array_unique($new);
    foreach($uniq as $k=>$ser)
        $new1[$k] = unserialize($ser);
    return ($new1);
}

アレイの初期化:

$unique_array = array(
    'username'=>array(),
    'user_id'=>array(),
    'weeknumber'=>array()
    );

while ループ内から配列を作成します。

while($row = mysql_fetch_array($query))
{
$unique_array[] = array('username'=>$row['username'], 'user_id'=>$row['user_id'], 'weeknumber'=>$row['weeknumber']);
}

最後に、while ループの後で、配列の値が一意であることを確認する必要があります (データベースとクエリの制限の結果、エントリが重複しています)。

print_r(multi_unique($unique_array));

重複するエントリが削除されたデータベースから動的に生成された、print_r を含むページで次のような出力が生成されます。

Array ( [username] => Array ( ) [0] => Array ( [username] => username1 [user_id] => 58 [weeknumber] => 1 ) [1] => Array ( [username] => username2 [user_id] => 21 [weeknumber] => 1 ) [3] => Array ( [username] => username3 [user_id] => 24 [weeknumber] => 1 )

先ほど言ったように、すべてが順調に配列に入ります。もう一度すべてを引き出す良い方法が必要です。ユーザー名、user_id、および週番号をループ内でエコーする必要があります。

どんな助けでも大歓迎です!

はい、私は mysql が非推奨であることを知っていますが、今それを変更するにはゲームが遅すぎます + 私は他の誰かによって既存のコードに取り組んでいます。

4

2 に答える 2

2

配列をループするだけで、ループの各反復が次の配列になります。unique_array

foreach($unique_array as $row){
   // Format this as desired
   echo $row['username'] . $row['user_id'] . $row['weeknumber'];
}
于 2013-07-02T01:03:35.740 に答える
0

初期化コードが正しくありません。次のようにする必要があります。

$unique_array = array();

すべてを引き出すには、次を使用します。

foreach ($unique_array as $user) {
  echo "Username: " . $user['username'] . "\n";
  echo "UserID: " . $user['user_id'] . "\n";
  echo "Week Number: " . $user['weeknumber'] . "\n";
  echo "\n";
}
于 2013-07-02T01:05:05.403 に答える