Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz Soak #10484 üzenetére

    "Az előző hsz.-edben az volt a problémád"
    Ácsi, kicsit rosszul közelíted meg a kérdést. Nekem aztán nem probléma, ha gányolsz, de tanácsot kértél.

    $_GET: Akkor totál félreértetted, amit mondtam. Annyit javasoltam, hogy a $_GET, $_POST és hasonló tömbökhöz közvetlenül már ne nyúlj az objektumodban, hanem add át paraméterként a tartalmukat a metódusnak, állítsd be a konstruktorban, vagy fogalmam sincs, hogyan oldd meg, de a metóduson belül ne közvetlenül használd már ezeket a tömböket, mert szerintem nem szép. Komolyabb rendszerekben sem nagyon szoktam látni, hogy közvetlenül nyúlkálnak hozzá az osztályon belül. De ahogy érzed.

    A foreach egy egyszerű bejáró algoritmus, semmi extra mutatvány nincs a dologban. De ha háromszor használsz foreach-et, akkor háromszor járod be. Ez felesleges.
    Ez most a kosaras példánál maradva olyan, mintha lenne egy kosarad, ami tele van kék, fekete, piros golyókkal, és neked az lenne a feladatod, hogy ezeket külön kosarakba gyűjtsd színek szerint; te pedig úgy oldanád meg, hogy először átnéznéd a kosarat, és kiszednéd a pirosakat a saját kosarába, majd ha ezzel végeztél, akkor megint átnéznéd a kosarat, csak a kék golyókra koncentrálva, aztán harmadik alkalommal is átnéznéd, akkor már csak a fekete golyókat keresgélve, miközben ezt megoldhattad volna úgy is, hogy az épp kezed ügyébe kerülő golyót a megfelelő kosárba pakolod, szín szerint.

    $senders tömböd:
    itt már részletesen leírtam, mi a probléma vele. Nem igazán vágom, mit nem értesz belőle, de megpróbálom még egyszer elmagyarázni, kiemelve a lényegi részt:

    $senders = array();
    if(array_key_exists($message->sender_username,$senders))

    Elmagyarázva szavakkal, a kosaras példával:
    $kosár = tök üres
    ha a $kosárban van piros színű golyó, akkor csináld ezt:

    Vágod?

    Sk8erPeter

  • DeltaPower

    őstag

    válasz Soak #10484 üzenetére

    Ha jól értem ezt, az IF első része arra vonatkozik, ha egy adott feladótól érkező üzeneteket akarsz listázni, a második része pedig a feladók listája.

    Három foreach tényleg fölösleges, még ha max 2 fut is le, főleg hogy minddel végigmész az összes üzeneten.

    Én ilyesmi megoldást ajánlok:
    function list_messages()
    {
    if( $_GET['i'])
    {
    $messages = self::find_messages_by_sender_id($_GET['i']);
    }
    else
    {
    $messages = self::find_messages_by_users_id($_SESSION['user_id']);
    $sender_list=getSenderListWithCount($_SESSION['user_id']);
    }

    foreach ($messages as $message) { ... }

    }

    function getSenderListWithCount($cimzett_id)
    {
    // SELECT COUNT(message_id), ... WHERE cimzett_id={$cimzett_id} GROUP BY sender_id
    }

    "Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser

Új hozzászólás Aktív témák