Ekhmmm... nooo taaaak....
To i cała reszta z tych trzech warunków jest dość bez sensu.
<?php
if(!empty($GrzybLac)) $warunki[] = $GrzybLac == $grzyb->GrzybLac; ?>
1) używasz obiektu $grzyb, którego jeszcze nie stworzyłeś, więc porównanie, jeżeli ruszy, zwróci bzdury
2) porównanie zwróci wartość boolean, czyli true albo false, nic innego, zatem Twoja tablica $warunki = array(false,false,false)
<?php
$warunek = implode(' && ', $warunki); ?>
implode" title="Zobacz w manualu PHP" target="_manual - poczytaj co przyjmuje za argumenty i co zwraca. Ponieważ tutaj będziesz miał
konwersję typów to twój warunek będzie wyglądał bezsensownie jak np. "0 && 0 && 0".
<?php
if($warunek){
...
?>
To na pewno nie zadziała jakbyś sobie wymarzył -> implode zwraca string, jeżeli jeszcze nie doczytałeś, $warunek zawiera powiedzmy "0 && 0 && 0" więc masz if("0 && 0 && 0") { ...
Możnaby zrobić to w taki sposób, że zapisujesz warunki jako stringi:
<?php
if(!empty($GrzybLac)) $warunki[] = '$GrzybLac == $grzyb->GrzybLac'; ...
$warunek = implode(' && ', $warunki); ....
...
?>
Nie jest to elegancki sposób, raczej nie powinno się do takich rzeczy używać eval(), poczytaj sobie więcej na temat tej funkcji w manualu
eval" title="Zobacz w manualu PHP" target="_manualJeszcze jedno, file_get_contents i simplexml_load_string możesz skrócić do
simplexml_load_file" title="Zobacz w manualu PHP" target="_manual