Zdravím přátelé, potřeboval bych pomoci s napsáním podmínky.
Mám takové pole
https://pastebin.com/1dpxmvhD
a potřebuji napsat podmínku, která by vrátila true
pokud bude souhlasit 'url' a 'parent' i 'level'
nebo false
Poradí mi někdo?
<?php
function compare($url, $parent, $level) {
foreach ($list as $item) {
if (($url === $item['url']) && ($parent === $item['parent']) && ($level === $item['level'])) {
return true;
}
}
return false;
}
<?php
function compare($item, $url, $parent, $level) {
return ($url === $item['url']) && ($parent === $item['parent']) && ($level === $item['level']);
}
foreach($myarr as $item)
echo (compare($item, "empty-3", "13", "3") ? "True" : "False")."\n";
?>
Ahoj, je potřeba ty příklady ještě nějak doladit? Oba příklady vrací vždy jen false.
function compare($item, $subarray) {
return empty(aray_diff_assoc($subarray, $item));
}
Citace od: Dědek kdy 09. 01. 2018, 23:27:53
Ahoj, je potřeba ty příklady ještě nějak doladit? Oba příklady vrací vždy jen false.
Mně vrací true, pokud souhlasí všechny 3 parametry. Proměnná $list samozřejmě musí být z funkce dostupná, například jako atribut v objektu.
To pole máš udělané nešikovně. Změnou jeho struktury bys takový test mohl udělat na jednom řádku a bylo by to i rychlejší. Doufám, že ho netaháš z databáze.
Přístupné to mám jako parametr, z db to tahám, jedná se o Nested.
Citace od: Dědek kdy 09. 01. 2018, 23:59:31
Přístupné to mám jako parametr, z db to tahám, jedná se o Nested.
A co kdybys z DB tahal jen ten jeden řádek, který splňuje ty 3 podmínky?
Již to funguje, problém byl v ===, nahradil jsem za == a funguje to správně, sice by mělo fungovat i === ale nevím proč ne. Z db to tahám všechno, jelikož následně vypisuji veškeré kategorie.
Děkuji za pomoc.
Citace od: Dědek kdy 09. 01. 2018, 23:27:53
Ahoj, je potřeba ty příklady ještě nějak doladit? Oba příklady vrací vždy jen false.
Můj určitě vždy jen false nevrací, odzkoušeno... Nebo je chybně pochopeno zadání...
Citace od: Dědek kdy 10. 01. 2018, 00:29:10
Již to funguje, problém byl v ===, nahradil jsem za == a funguje to správně, sice by mělo fungovat i === ale nevím proč ne.
Můj odhad je, že v DB jsou
parent a
level uloženy jako čísla, ale porovnáváte to se stringy.