Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Dědek kdy 09. 01. 2018, 21:41:06

Název: PHP - Ověření položky v poli
Přispěvatel: Dědek kdy 09. 01. 2018, 21:41:06
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?
Název: Re:PHP - Ověření položky v poli
Přispěvatel: Kit kdy 09. 01. 2018, 22:14:06
<?php

function compare($url, $parent, $level) {
   foreach (
$list as $item) {
       if ((
$url === $item['url']) && ($parent === $item['parent']) && ($level === $item['level'])) {
           return
true;
       }
   }
   return
false;
}
Název: Re:PHP - Ověření položky v poli
Přispěvatel: ByCzech kdy 09. 01. 2018, 22:53:55

<?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";
?>
Název: Re:PHP - Ověření položky v poli
Přispěvatel: 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.
Název: Re:PHP - Ověření položky v poli
Přispěvatel: mmm kdy 09. 01. 2018, 23:32:04

function compare($item, $subarray) {
   return empty(aray_diff_assoc($subarray, $item));
}
Název: Re:PHP - Ověření položky v poli
Přispěvatel: Kit kdy 09. 01. 2018, 23:37:29
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.
Název: Re:PHP - Ověření položky v poli
Přispěvatel: 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.
Název: Re:PHP - Ověření položky v poli
Přispěvatel: Kit kdy 10. 01. 2018, 00:20:54
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?
Název: Re:PHP - Ověření položky v poli
Přispěvatel: 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. Z db to tahám všechno, jelikož následně vypisuji veškeré kategorie.
Děkuji za pomoc.
Název: Re:PHP - Ověření položky v poli
Přispěvatel: ByCzech kdy 10. 01. 2018, 01:52:51
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í...
Název: Re:PHP - Ověření položky v poli
Přispěvatel: Sten kdy 10. 01. 2018, 02:10:01
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.