PHP - Ověření položky v poli

Dědek

PHP - Ověření položky v poli
« 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?


Kit

Re:PHP - Ověření položky v poli
« Odpověď #1 kdy: 09. 01. 2018, 22:14:06 »
Kód: [Vybrat]
<?php

function compare($url$parent$level) {
    foreach (
$list as $item) {
        if ((
$url === $item['url']) && ($parent === $item['parent']) && ($level === $item['level'])) {
            return 
true;
        }
    }
    return 
false;
}

ByCzech

  • *****
  • 1 870
    • Zobrazit profil
    • E-mail
Re:PHP - Ověření položky v poli
« Odpověď #2 kdy: 09. 01. 2018, 22:53:55 »
Kód: [Vybrat]
<?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";
?>


Dědek

Re:PHP - Ověření položky v poli
« Odpověď #3 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.

mmm

Re:PHP - Ověření položky v poli
« Odpověď #4 kdy: 09. 01. 2018, 23:32:04 »
Kód: [Vybrat]
function compare($item, $subarray) {
   return empty(aray_diff_assoc($subarray, $item));
}


Kit

Re:PHP - Ověření položky v poli
« Odpověď #5 kdy: 09. 01. 2018, 23:37:29 »
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.

Dědek

Re:PHP - Ověření položky v poli
« Odpověď #6 kdy: 09. 01. 2018, 23:59:31 »
Přístupné to mám jako parametr, z db to tahám, jedná se o Nested.

Kit

Re:PHP - Ověření položky v poli
« Odpověď #7 kdy: 10. 01. 2018, 00:20:54 »
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?

Dědek

Re:PHP - Ověření položky v poli
« Odpověď #8 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.

ByCzech

  • *****
  • 1 870
    • Zobrazit profil
    • E-mail
Re:PHP - Ověření položky v poli
« Odpověď #9 kdy: 10. 01. 2018, 01:52:51 »
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í...

Sten

Re:PHP - Ověření položky v poli
« Odpověď #10 kdy: 10. 01. 2018, 02:10:01 »
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.