(PHP) Помогите скрипту отладки отслеживать только уникальные элементы - PullRequest
0 голосов
/ 29 января 2010

У меня есть этот скрипт, который я пытаюсь реализовать для работы на моем веб-сайте, и предполагается, что скрипт отслеживает, в какие игры играют в данный момент, но единственная проблема заключается в том, что когда я вызываю скрипт для отображения записей, он будет покажите дубликаты, и я хочу, чтобы скрипт действительно исследовал строку и взял только $ gamename и искал дубликаты, а не всю строку.

Что делает скрипт: Записывает идентификатор игры, имя игры, URL-адрес игрового пальца, IP и время, разделенные знаком |. Пример: 1744 | Самый простой сноуборд | Самый простой сноуборд | 77.88.42.26 | 1264717552

Найдите IP-адрес и, если он уже существует, обновите запись с новой информацией. Если IP еще не существует, напишите новую строку с информацией. Если запись старше 60 минут, сотрите ее.

Это простой скрипт, который я буду использовать, чтобы показать, что люди сейчас играют на сайте.

$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++;

}

Пожалуйста, помогите и спасибо всем заранее.

1 Ответ

0 голосов
/ 29 января 2010

Ваш вызов 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];
}

Это даст вам ассоциативный массив уникальных имен игр с идентификаторами игр в качестве ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...