Obsahuje dvourozměrné pole samé nuly?

Školení, která pořádám

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).

Jakub Vrána, Výuka, 25.11.2005, diskuse: 2 (nové: 0)

Diskuse

kr4UT1k:

A když nebude pole obsahovat samé nezáporné hodnoty? Stačí pak toto?
<?php
if ( (max(max($pole)) == 0) && (max(max($pole)) == 0) ) {
    return; //tohle return bez niceho mi taky neni moc jasny, ale budiz
}
?>

ikona Jakub Vrána OpenID:

Asi jsi měl na mysli spíš min(min($pole)) == 0. Pak by to mělo stačit.

Samotný return způsobí ukončení funkce (nebo vloženého souboru, pokud je mimo funkci) bez předání návratové hodnoty (jako by se předala null).

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.