0

私は自分のウェブサイトで動作するように実装しようとしているこのスクリプトを持っており、スクリプトは現在プレイされているゲームを追跡することを想定していますが、唯一の問題は、スクリプトを呼び出してエントリを表示すると、重複が表示され、スクリプトが実際に文字列を探索し、$ gamenameのみを取得して、文字列全体ではなく重複を探すようにします。

スクリプトの機能:gameID、gamename、gamethumb url、IP、および時間をすべて|で区切って記録します。例:1744|最もシンプルなスノーボード|最もシンプルなスノーボード|77.88.42.26 | 1264717552

IPを探し、すでに存在する場合は、新しい情報でレコードを更新します。IPがまだ存在しない場合は、情報を含む新しい行を書き込みます。レコードが古い場合は、60分で消去します。

これは、人々が現在Webサイトで何をプレイしているかを示すために使用する単純なスクリプトです。

$dataFile = "visitors2.txt";
$numbergames = 30;
//Please do not edit bellow this line

error_reporting(E_ERROR | E_PARSE);

$users = array();

//getting
$fp = fopen($dataFile, "r");
flock($fp, LOCK_SH);
while(!feof($fp)) {
$users[] = fgets($fp, 4096);
}
flock($fp, LOCK_UN);
fclose($fp);
$i = 0;
echo '<ul>';
foreach(array_unique($users) as $key => $data) {
list($game2id , $gamename , $gamethumb , , ) = explode("|", $data);
//echo $game2id . $gamename;
if($gamename != "" && $i <= $numbergames) {
$newpageurl = str_replace(" ", "-", strip_tags(trim(str_replace($rplce, "", $gamename))))  ;
$url = $game2id .'-'. $newpageurl .'.html';

echo '<li><a href="'.$url.'"><img src="./arcade/img/'.$gamethumb.'.png" width="35" height="35" border="0" /></a>'.$gamename.'</li>';
}
$i++;

}

よろしくお願いします。よろしくお願いします。

4

1 に答える 1

0

あなたのarray_unique()呼び出しは重複行を排除するだけです - ゲーム名だけでなく、行全体です。ゲーム名だけの配列を作成する必要があります。次に、重複を排除できます。

何かのようなもの:


$currentGames = array();
$max = 30;
$fp = fopen($dataFile, "r");
flock($fp, LOCK_SH);
while ((count($currentGames) < $max) && (($data = fgetcsv($fg, 0, '|')) !== FALSE) 
{
 if (!in_array($data[1], $currentGames)) $currentGames[$data[0]] = $data[1];
}

これにより、キーとしてゲーム ID を持つ一意のゲーム名の連想配列が得られます。

于 2010-01-29T10:10:22.073 に答える