Dodam od siebie żeby na przyszłość nie utrudniać sobie życia. Rozwiązanie obiektowe posiada mnóstwo dodatkowych atutów przy takich listach.
Struktura opisująca auta
/**
* Struktura opisująca auto
* @author Paweł Stelmasiak <YourFrog>
*/
class Car
{
/**
* Marka
* @var string
*/
protected $brand;
/**
* Pojemność
* @var float
*/
protected $volume;
/**
* Moc silnika
* @var integer
*/
protected $power;
/**
* Rok produkcji
* @var integer
*/
protected $year;
/**
* Konstruktor
*/
public function __construct()
{
$this->brand = 'unknow';
$this->year = 0;
$this->volume = 0;
$this->power = 0;
}
//Setter
/**
* Ustawia markę auta
* @param string $brand
*/
public function setBrand($brand)
{
$this->brand = $brand;
}
/**
* Ustawia pojemność auta
* @param float
*/
public function setVolume($volume)
{
$this->volume = $volume;
}
/**
* Ustawia moc auta
* @param integer
*/
public function setPower($power)
{
$this->power = $power;
}
/**
* Ustawia rok produkcji auta
* @param integer
*/
public function setYear($year)
{
$this->year = $year;
}
//Getter
/**
* Zwraca markę auta
* @return string
*/
public function getBrand()
{
return $this->brand;
}
/**
* Zwraca pojemność auta
* @return float
*/
public function getVolume()
{
return $this->volume;
}
/**
* Zwraca moc auta
* @return integer
*/
public function getPower()
{
return $this->power;
}
/**
* Zwraca rok produkcji auta
* @return integer
*/
public function getYear()
{
return $this->year;
}
}
Kolekcja obsługująca listę aut
/**
* Klasa zarządzająca kolekcją aut
* @author Paweł Stelmasiak <YourFrog>
*/
class CarCollection extends \YourFrog\Library\ArrayObject
{
/**
* Sortuje listę po pojemności aut
*/
public function sortByVolume()
{
uasort($this->arr, function($a, $b){
if( $a->getVolume() == $b->getVolume() )
return strcmp($a->getBrand(), $b->getBrand());
return $a->getVolume() < $b->getVolume();
});
}
}
Główny kod w którym ustalasz sobie auta
$manager = new CarCollection();
$car = new Car();
$car->setBrand('Ford');
$car->setYear(2003);
$car->setVolume(2.5);
$car->setPower(142);
$manager->append($car);
$car = new Car();
$car->setBrand('BMW');
$car->setYear(2005);
$car->setVolume(2.5);
$car->setPower(197);
$manager->append($car);
$car = new Car();
$car->setBrand('Opel');
$car->setYear(2001);
$car->setVolume(1.6);
$car->setPower(113);
$manager->append($car);
$car = new Car();
$car->setBrand('Audi');
$car->setYear(2004);
$car->setVolume(3.2);
$car->setPower(214);
$manager->append($car);
$manager->sortByVolume();
Gdzieś w pliku z widokiem wyświetlasz sobie auta
$html = '';
foreach($manager as $car)
{
$html .= '<li>
<p>' . $car->getBrand() . '</p>
<p>rocznik: ' . $car->getYear() . '</p>
<p>pojemność: ' . $car->getVolume() . '</p>
<p>moc: ' . $car->getPower() . '</p>
</li>';
}
Na końcu link do całego przykładu (znajduje się tam klasa ArrayObject i Arr).
http://www.speedyshare.com/d69Y4/test.zip