Elseif loop breaks upon my else statement

Hey guys, so I need to add or remove, and sometimes have no text depending on if a few things match up, so this is my code

<?php if ($vehicle->vehicletype() == ('Car' || 'Campervan') && $vehicle->financevehicletype() == 'car') : ?>
   <span class="vat ms-2">nothing will show</span>

<?php elseif ($vehicle->vehicletype() == ('Van' || '4x4') && $vehicle->financevehicletype() == 'lcv') : ?>
   <span class="vat"> +VAT</span>

<?php else ($vehicle->vehicletype() == ('Van' || '4x4') && $vehicle->financevehicletype() == 'car') : ?>
   <span class="vat"> NO VAT</span>

<?php endif ?>

now if I remove that final else statement, the rest of it appears to be working fine. but of course I need it to do the set of rules in the else statement too!

Thanks - Josh

The else can’t have a condition.
You either do this:

<?php elseif ($vehicle->vehicletype() == ('Van' || '4x4') && $vehicle->financevehicletype() == 'car') : ?>
   <span class="vat"> NO VAT</span>
<?php endif; ?>

Or you do this

<?php else: ?>
   <span class="vat"> NO VAT</span>
<?php endif; ?>

Your logic is not correct, anyway, should be:

<?php if ($vehicle->vehicletype()->value() === 'Car' || $vehicle->vehicletype()->value() === 'Campervan') && $vehicle->financevehicletype()->value() === 'car') : ?>
<!-- etc. -->
<?php endif ?>

Or use in_array()

<?php if (in_array($vehicle->vehicletype()->value(), ['Car', 'Campervan']) && $vehicle->financevehicletype()->value() === 'car') : ?>
<!-- etc. -->
<?php endif ?>
2 Likes