Pokud má funkce skončit v případě, že dvourozměrné pole obsahuje samé nuly, lze postupovat takto:
<?php $pole = array(array(0, 0), array(0, 1)); $same_nuly = true; foreach ($pole as $radek) { foreach ($radek as $val) { if ($val) { $same_nuly = false; break 2; } } } if ($same_nuly) { return; } ?>
Pokud pole obsahuje samé nezáporné hodnoty, tak se pro vyřešení úlohy dá obratně využít i funkce max:
<?php if (max(max($pole)) == 0) { return; } ?>
Připomínám, že pokud funkce max dostane jako jediný parametr pole, vrátí maximum z prvků tohoto pole. Vnitřní max tedy vrátí svůj nejvyšší prvek – v našem případě array(0, 1)
– a vnější max z něj vrátí největší číslo.
Pravidla pro porovnávání hodnot různých typů jsou už popsána v dokumentaci, ale dlouho tam chyběla, takže jejich přesné znění by dal dohromady myslím málokdo. Z pravidel vyplývá a za zapamatování stojí, že max(max($pole))
nemusí nutně vrátit největší prvek pole, ale vrátí největší prvek pole, které je vyhodnoceno jako největší. Např. max(max(array(array(1, 2), array(0, 5))))
vrátí 2
, protože array(1, 2) > array(0, 5)
.
Diskuse je zrušena z důvodu spamu.