Alterar posição de arrays
Boa tarde pessoal !
Sou novo aqui no forum, então se eu postar algo errado me perdoe.
Amigos, sou novo com php e estou tendo problemas em achar uma solução.
Tenho um array:
$arrayCarro = array(
array(
"Cor"=>$gol->getCor(),
"Marca"=>$gol->getMarca(),
"Modelo"=>$gol->getModelo(),
"Ano"=>$gol->getAno()
),
array(
"Cor"=>$fusca->getCor(),
"Marca"=>$fusca->getMarca(),
"Modelo"=>$fusca->getModelo(),
"Ano"=>$fusca->getAno()
),
array(
"Cor"=>$tg->getCor(),
"Marca"=>$tg->getMarca(),
"Modelo"=>$tg->getModelo(),
"Ano"=>$tg->getAno()
)
);
e eu passo ele para um objeto do tipo 'Corrida', até ai tudo bem. Porém eu tenho uma function chamada 'ultrapassagem' e não faço a menor ideia de como poderia, de fato, fazer essa "ultrapassagem".
Este é o 'index.php':
<?php
require 'classes/Carro.php';
require 'classes/Corrida.php';
$gol = new Carro();
$fusca = new Carro();
$tg = new Carro();
$gol->setCor("Rosa");
$gol->setMarca("Wolks");
$gol->setAno(2018);
$gol->setModelo("Sedan");
$fusca->setCor("Azul");
$fusca->setMarca("Wolks");
$fusca->setAno(2018);
$fusca->setModelo("4X4");
$tg->setCor("vermelho");
$tg->setMarca("TG sedan");
$tg->setAno(2098);
$tg->setModelo("Flat");
$arrayCarro = array(
array(
"Cor"=>$gol->getCor(),
"Marca"=>$gol->getMarca(),
"Modelo"=>$gol->getModelo(),
"Ano"=>$gol->getAno()
),
array(
"Cor"=>$fusca->getCor(),
"Marca"=>$fusca->getMarca(),
"Modelo"=>$fusca->getModelo(),
"Ano"=>$fusca->getAno()
),
array(
"Cor"=>$tg->getCor(),
"Marca"=>$tg->getMarca(),
"Modelo"=>$tg->getModelo(),
"Ano"=>$tg->getAno()
)
);
$corrida = new Corrida($arrayCarro);
$corrida->posicaoCarro();
Esta é a Classe Corrida:
<?phpclass Corrida
{
private $arrayCarros;
public function __construct($arrayCarros)
{
$this->arrayCarros = $arrayCarros;
if(count($arrayCarros) > 0)
{
echo 'A corrida pode começar pois existe mais de um carro !'.PHP_EOL;
} else {
echo 'A corrida não pode começar pois existe apenas um carro :('.PHP_EOL;
exit;
}
}
public function iniciarCorrida()
{
echo 'Começando a corrida ...'.PHP_EOL;
echo '1, 2, 3 e JÁ!!.' .PHP_EOL;
echo '- A corrida começou ! Confira a posição inicial de cada carro: '.PHP_EOL;
echo PHP_EOL;
$this->posicaoCarro();
}
public function ultrapassagem()
{
/*Aqui eu tentei fazer algo, porem ele apenas retira o último elemento do array
e o avança para direita, foi o mais próximo que consegui de uma 'Ultrapassagem' */
$quantidadeCarros = count($this->arrayCarros);
$auxiliar = $this->arrayCarros[$quantidadeCarros - 1];
for ($i = $quantidadeCarros -1; $i > 0 ; $i--) {
$this->arrayCarros[$i] = $this->arrayCarros[$i -1];
}
$this->arrayCarros[0] = $auxiliar;
echo 'Aconteceu uma ultrapassagem'.PHP_EOL;
print_r($this->arrayCarros);
}
//Apenas uma função para 'melhorar' a exibição dos arrays.
public function posicaoCarro()
{
$i = 1;
foreach ($this->arrayCarros as $key => $value){
echo 'Posição ['. $i++."] => ";
print_r("Marca: " . $value['Marca'] . ", ");
print_r("Modelo: " . $value['Modelo'] . ", ");
print_r("Ano: " . $value['Ano'] . " ");
print_r("Cor: " . $value['Cor'] . " " .PHP_EOL);
echo PHP_EOL;
}
}
**OBS: Existem N carros.**
**Um carro só pode passar o carro que esta na sua frente, por ex: Carro[1] pode ultrapassar o Carro[0], porém o Carro [2] não pode ultrapassar o Carro[0], apenas o Carro[1]. Após a ultrapassagem a lista dos carros deve ser reordenada.**
Alguém poderia me ajudar ?
Desde já agradeço !Discussão (3)
Carregando comentários...