- Telekom mobilszolgáltatások
- Xiaomi 13 Pro - szerencsés szám
- Magyarországon is kapható a Moto G85 5G
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Vivo X200 Pro - a kétszázát!
- OnePlus 15 - van plusz energia
- Google Pixel topik
- AirTag-riválist hoz Európába a Xiaomi
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Galaxy Buds4/Buds4 Pro: demómodelleken az új szárkialakítás
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
Cathfaern
#10486
üzenetére
Na, most felraktam ide, hogy normálisan nézzen ki, így már legalább látható is, mi van a kódban...

Csak most látom át, így, hogy ki is lehet valamit belőle venni, hogy csak az else ágban van a másik kettő foreach...
A $senders-re vonatkozó részt tényleg félreértettem... hát igen, nem árt, ha normálisan van indentálva a kód....
$senders = array();
foreach ($messages as $message) {
if (array_key_exists($message->sender_username, $senders)) {
$senders[$message->sender_username]++;
} else {
$senders[$message->sender_username] = 1;
}
}Tehát magyarul akkor ad hozzá a $senders adott kulcsánál lévő számhoz plusz egyet, ha már létezik az adott kulcs a felhasználó nevével, egyébként eggyel egyenlő...

Igazad van, ezt sem láttam át a korábbi ocsmány kód miatt (az is igaz, hogy eléggé átrohantam rajta).
Ettől függetlenül továbbra is fenntartom, hogy ezt nem így kéne, nemsokára írom, miért. Áll a többi dolog is, azzal a módosítással, hogy ezek szerint nem fut le mindhárom ciklus, mert külön vannak. A statikus függvényhívásokra, változókra, egyebekre (pl. truncate() külön függvény/metódus, stb.) vonatkozó dolgok is állnak."Amennyiben az első foreachen belül megváltoztatsz valamit a tömbön, akkor lehet értelme mégegyszer bejárni (elvileg ugyanazt a tömböt, gyakorlatilag nyilván akkor már nem ugyanazon mész végig). És ahogy láttam, itt pontosan erről van szó."
Nézd meg még egyszer, a $messages tömbön nem változtat semmit az első ciklusban. Csak kigyűjti a $senders tömbbe a megfelelő neveket, a hozzájuk tartozó üzenetek számát. Aztán ezt használja fel a második foreach-nél, és ennyi.
Az a baj, hogy feltételezem, a find_messages_by_users_id() metódusában eleve van már egy ciklus, ami bejárja az adatbázisból lekért eredményeket. Így tehát összesen 3 darab (!) ciklus lesz mégis, mert még ezt is be kell járni még egyszer. Úgy lehetne ezt redukálni mondjuk max. 2-re, hogy eleve egy normális query-t ír, ami felhasználók szerint csoportosítva kéri le az üzeneteket, aztán amikor ezt az eredményhalmazt bejárja PHP-vel, akkor eleve felhasználónként gyűjti egy tömbbe az üzeneteket. Akkor meg már lehetne használni ezeken a gyorsabb count() függvényt is, amivel egyből megkapná, hány darab üzenet tartozik a felhasználóhoz, meg csak a kiíratáshoz kellene bejárni.
Úgy már nem lenne gány.
Új hozzászólás Aktív témák
- Eladó olcsó config diszkont áron :)
- Lenovo Legion 5 17ACH6H - RTX 3060 / Ryzen proci / 17,3 144Hz sRGB kijelző / 16GB RAM / 2TB SSD!
- Thinkpad X13 Gen2i 13.3" FHD+ IPS i5-1145G7 16GB 256GB NVMe SSD gar
- XFX Speedster SWFT 319 AMD Radeon RX 6800 16GB Garancia 2027-ig!
- Tökéletes ajándék! 150 ezerrel olcsóbban mint a bolti ár! 3ÉV GARI BONTATLAN MSI CYBORG 15 RTX 5060
- Lenovo Flex 5 - 14.0" Touch WUXGA - Ryzen 3 5300U - 8GB - 256GB - Win11 - Garancia - MAGYAR
- Lenovo ThinkPad X1 Yoga G6 (6th Gen) - i7-1185G7, 32GB, 512GB SSD, multitouch + TOLL
- Apple iPad Air 5.Gen 64GB 100% (1év Garancia)
- Bomba ár! Dell Latitude 7290 - i5-7GEN I 8GB I 256GB SSD I 12,5" HD I HDMI I Cam I W11 I Gari!
- iPhone 13 128Gb független akku: 100%
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

A $senders-re vonatkozó részt tényleg félreértettem... hát igen, nem árt, ha normálisan van indentálva a kód....

