Zoradenie vnoreného poľa – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zoradenie vnoreného poľa – PHP – Fórum – Programujte.comZoradenie vnoreného poľa – PHP – Fórum – Programujte.com

 

27. 11. 2014   #1
-
0
-

Dobrý deň

Na mojom webe pripravujem stránku pre moje partnerské odkazy. Chcem aby boli radené podľa kliknutí na jednotlivé odkazy. Mám už zhotovený php kód, Prikladám tu príklad s tromi linkami:

$soubor="profutbal.dat";
$file=fopen("$soubor","r");
$profutbal=fgets($file,100);

$soubor="coen.dat";
$file=fopen("$soubor","r");
$coen=fgets($file,100);

$soubor="pobox.dat";
$file=fopen("$soubor","r");
$pobox=fgets($file,100);

function cmp($a, $b)
{

    if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? -1 : 1;
}

$odkazy = array($profutbal => "profutbalkod.php", $coen => "coenkod.php", $pobox => "poboxkod.php");

uksort($odkazy, "cmp");

foreach ($odkazy as $key => $value) {
    include "$value";

}

Z datových súborov načítavam jednotlivé počty kliknutí na jednotlivé odkazy, to funguje všetko ako má. Rovnako funguje zoradzovanie od najväčšieho počtu po najnižší, ale len dovtedy, kým nenastane situácia, kde dva a viac odkazov má rovnaký počet kliknutí. Vtedy funkcia foreach zobrazí len prvý z tých rovnako položených odkazov a automaticky postupuje k nižším hodnotám. To znamená ak by som mal dva linky so 42 kliknutiami a tretí s 30timi, funkcia include by mi vložila zdrojový kód len k jednému z nich a následne by následoval link s nižšou hodnotou. Vedel by mi niekto poradiť prosím ako doplniť môj kód tak, že pri situácií, keď budú mať dva alebo viac odkazov rovnaký počet kliknutí, aby sa includovali všteky tieto odkazy?

Nahlásit jako SPAM
IP: 78.98.217.–
peter
~ Anonymní uživatel
4014 příspěvků
28. 11. 2014   #2
-
0
-

Nevim, jestli to uplne chapu. mozna poslat printr_r/var_dump + <pre> toho pole o trech polozkach?
Ze tri souboru vytahnes prvnich 100 znaku ("$soubor" - kde tady nemusis mit ty uvozovky, leda bys to mel jinak nez jsi poslal do forka). Pak z toho udelas pole a pouzijes uksort. Cili, to pole by mohlo vypadat nejak takto:

$odkazy = array('111' => "profutbalkod.php", '1' => "coenkod.php", '20' => "poboxkod.php");

Coz se za normalinch olkolnosti seradi nejak takto: '1', '111', '20'. Ale to je vedlejsi. Take by mohlo vypadat takhle

$odkazy = array('11' => "profutbalkod.php", '11' => "coenkod.php", '11' => "poboxkod.php");

Coz uz problem je, protoze index muzes mit jen jeden. Co s tim? Cislovani radku, dvojpole.
$odkazy = array();
$odkazy[0] = array('11' => "profutbalkod.php"); // atd 1, 2, 3... nebo lepe
$odkazy[0] = array('11', "profutbalkod.php");

Pro funkci pak pri pouziti $odkazy[0] = array('11', "profutbalkod.php"); pak $a a $b jsou pole s radky
cili
$a = array('11', "profutbalkod.php");
$b = array('11', "coenkod.php");
A kdybys to takto chtel porovnat, tak to porovnas jako $a[0]>$b[0], ne?

S pouzitim indexu bys to mel slozitejsi, protoze bys tam musel pridat neco jako foreach nebo array_keys()[0], ikdyz v tom poli mas je jediny index, jenze nevis, jak se jmenuje.

Viz online priklady na uksort
http://php.net/uksort

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:ac26:cf...–
peter
~ Anonymní uživatel
4014 příspěvků
28. 11. 2014   #3
-
0
-

Treba ten nulty priklad resi vice-rozmerne pole...
aleczapka at gmx dot net - 9 years ago
Here is a small and very fast object to handle sorting of multidimentional arrays by a key....

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:ac26:cf...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 31 hostů

Podobná vlákna

Zoradenie cisel — založil Navi

Špecifické zoradenie — založil ArcaneBeam13

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý