wyświetlanie porządku linii po sorcie

PHP to skryptowy język wykonywany po stronie serwera. Forum przeznaczone na pytania dot. programowania obiektowego, wzorców projektowych itp.
Awatar użytkownika
shpaque
Posty: 2
Rejestracja: 08 gru 2013, 18:22

wyświetlanie porządku linii po sorcie

Post autor: shpaque » 08 gru 2013, 18:27

Witam serdecznie, to mój pierwszy post na tym forum :) mam prośbę, poniżej kod:

Kod: Zaznacz cały

<?php
$dateins = array();
$dateouts = array();
$titles = array();
$citys = array();
$streets = array();
$poolnames = array();
$poollengths = array();
$results = array();
$differences = array();
$newdateins = array();
$count = 0;
$dzisiaj = strtotime(date('Y-m-d'));
$database = './db/zawody.db';
$items = file($database);
 
foreach($items as $line)
   {
      list($datein, $dateout, $title, $city, $street, $poolname, $poollength, $result) = explode('|', trim($line));
      $difference = (strtotime($datein) - $dzisiaj);
	  $newdatein = date('Y-m-d', ($dzisiaj + $difference));
 
      if ($difference > 0)
         {
            $dateins[$count] = $datein;
            $dateouts[$count] = $dateout;
            $titles[$count] = $title;
            $citys[$count] = $city;
            $streets[$count] = $street;
            $poolnames[$count] = $poolname;
            $poollengths[$count] = $poollength;
            $results[$count] = $result;            
			$differences[$count] = $difference;
 
			$newdateins[$count] = $newdatein;
			$nowa[] = $newdateins[$count];
         }
      $count++;
}
sort($nowa);
print_r($nowa);
$i = 0;
foreach($nowa as $key => $value)
{
	if ($value == $dateins)
	{
		$i = $key;
		$i = str_replace(array('[', ']'), '', $i);
	}
}
echo $dateins[$i];
?>
jak z niego widać pobiera on dane z pliku w liniach, ale tylko te, których data zaczyna się po aktualnej, później sortuję sobie daty i układam chronologicznie...

i tu pojawia się problem. Jak zrobić teraz żeby przyporządkować resztę zmiennych, a właściwie ich pozycję względem posortowanej zmiennej $nowa? Żeby ułożyć $dateins[$count] tak jak posortowała się zmienna $nowa i żeby $i było równe 0, kiedy mam najbliższą datę od dzisiejszej, $i = 1 kiedy następną i tak dalej...

Awatar użytkownika
shpaque
Posty: 2
Rejestracja: 08 gru 2013, 18:22

Re: wyświetlanie porządku linii po sorcie

Post autor: shpaque » 09 gru 2013, 11:33

:( jesteście tacy szybcy i tacy pomocni, że sam sobie to rozwiązałem:

Kod: Zaznacz cały

<?php
$dateins = array();
$dateouts = array();
$titles = array();
$citys = array();
$streets = array();
$poolnames = array();
$poollengths = array();
$results = array();
$differences = array();
$newdateins = array();
$dzisiaj = strtotime(date('Y-m-d'));
$database = './db/zawody.db';
$items = file($database);
 
foreach($items as $line)
   {
      list($datein, $dateout, $title, $city, $street, $poolname, $poollength, $result) = explode('|', trim($line));
      $difference = (strtotime($datein) - $dzisiaj);
      $newdatein = date('Y-m-d', ($dzisiaj + $difference));
      if ($difference > 0)
         {
            $dateins[] = $datein;
            $dateouts[] = $dateout;
            $titles[] = $title;
            $citys[] = $city;
            $streets[] = $street;
            $poolnames[] = $poolname;
            $poollengths[] = $poollength;
            $results[] = $result;            
            
            $differences[] = $difference;
            $newdateins[] = $newdatein;
         }
}
array_multisort ($newdateins, SORT_ASC, $dateins, $dateouts, $titles, $citys, $streets, $poolnames, $poollengths, $results, $differences);
echo $dateins[1];
echo ", ";
echo $dateouts[1];
echo ", ";
echo $citys[1];
?>

ODPOWIEDZ