←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

PHP
Zaokrąglanie czasu, itd itd...

ogury - zdjęcie ogury 28.10.2012

<?php
	$servers['servercs'] = array('cs', '31.186.86.30', '4005');
	require_once 'GameQ.php';
	$gq->setFilter('sortplayers', 'score');
	$gq = new GameQ;
	$gq->addServers($servers);
	$data = $gq->requestData();
	echo '<table cellpadding="3"><tr><td><b>Nick</b></td><td><b>Punkty</b></td><td>Czas</td></tr>';
	$tab = $data['servercs']['players'];
	$n = count($tab);
	for ($i=0;$i<$n; $i++)
	{
	echo "<tr><td>".$data['servercs']['players'][$i][name]."</td><td>".$data['servercs']['players'][$i][score]."</td><td>".$data['servercs']['players'][$i][time]."</td></tr>";
	}
	echo '</table>';
?>

Chciałbym zrobić tak, aby zamiast czasu w sekundach czas był zaokrąglony do całości, i do tego wyświetlał się tak: 0h 35min 6s, teraz wyświetla się tak:
3854.555558273 (w sekundach)

I jak zrobić sortowanie graczy od największej ilości zabić do najmniejszej?
Użytkownik ogury edytował ten post 28.10.2012 12:32
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 29.10.2012

http://php.net/manua...ction.round.php

Godziny to ten czas dzielisz przez 3600 ( / 3600 ).
Minuty tak samo jak godziny tylko przez 60 ( / 60 ).
Sekundy dzielisz modułowo przez 60 ( % 60 ).
Odpowiedz

Gość_21977_* 30.10.2012

Ad.1.
<?
	$s=$data['servercs']['players'][$i][time];
	$s=intval($s);
	$ctime=array(
		array("h", 3600, "h"),
		array("m", 60, "min"),
		array("s", NULL, "s")
	);
	$ctimes=count($ctime)-1;
	for($i=0; $i<$ctimes; ++$i){
		$s-=($$ctime[$i][0]=intval($s/$ctime[$i][1]))*$ctime[$i][1];
	}
	$timea=array();
	++$ctimes;
	for($i=0; $i<$ctimes; ++$i){
		if($$ctime[$i][0])$timea[]=$$ctime[$i][0].$ctime[$i][2];
	}
	$time=(empty($timea)?"0s":implode(" ", $timea));
	echo $time;
?>

Ad.2. [Manual] Sortowanie tablic wielowymiarowych
Odpowiedz

ogury - zdjęcie ogury 30.10.2012

Sam już znalazłem o wiele prostsze odpowiedzi od waszych:
$seconds = $results['serwer']['players'][$i][time];
    $hms = gmdate('H:i:s',$seconds);

$gq->setFilter('sortplayers', array('score',false));

W przypadku GameQ parametr false odwraca sortowanie...
Odpowiedz

Gość_21977_* 31.10.2012

Tym rozwiązaniem, otrzymasz czas postaci
01:04:14
zamiast
1h 4min 14s
więc, suma sumarum, niezgodne z tym, co pisałeś w 1. poście.
Odpowiedz