Archief - PHP: array/strings sorteren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fakefun

Legacy Member
De bedoeling is dat ik een lijst fotos kan sorteren op grootte, rating, ... maar het probleem is dat er sommige fotos zijn met dezelfde grootte, rating, ... en dit geval zou ik die met dezelfde waarde alfabetisch willen sorteren...

hier is een voorbeeld van het principe met wat ik zelf al gevonden had:

Code:
<html>
<head>

</head>
<body>

<?php

$imgs["1233"][] = "fondske";
$imgs["1071"][] = "joske";
$imgs["1345"][] = "sjef";
$imgs["1021"][] = "fritzke";
$imgs["1021"][] = "danny";
$imgs["1071"][] = "tony";
$imgs["1241"][] = "jozef";
$imgs["1022"][] = "fritz";
$imgs["1142"][] = "franky";

ksort($imgs);

$aantal_fotos    = 0;
$i = 0;

while(list($string,$vari) = each($imgs)){
	while(list($index,$val) = each($imgs[$string]))
	$foto[$aantal_fotos] = $val;
	$aantal_fotos = intval($aantal_fotos+1);
}


while (($i+1) <= $aantal_fotos) {

echo $foto[$i]."<br>";

$i++;
}
?>
</body>
</html>

Dit geeft als resultaat een opsomming van de namen, maar bij diegene die dezelfde waarde hebben als string wordt er maar 1 van weergegeven.

Iemand een oplossing?

killgore

Legacy Member
n/o, ma die code zuigt :s

read this:
PHP:
<?php

$imgs["1233"][] = "fondske";
$imgs["1071"][] = "joske";
$imgs["1345"][] = "sjef";
$imgs["1021"][] = "fritzke";
$imgs["1021"][] = "danny";
$imgs["1071"][] = "tony";
$imgs["1241"][] = "jozef";
$imgs["1022"][] = "fritz";
$imgs["1142"][] = "franky";

ksort($imgs);
$foto=array();

foreach($imgs as $key => $val)
{
	$foto = array_merge($foto,$imgs[$key]);
}

$aantal_fotos = sizeof($foto);
for($i = 0; $i < $aantal_fotos; $i++)
{
	echo $foto[$i]."<br>";
}
?>

Wat zuigt er juist aan jou code?
-veel te veel geloop, probeer zo weinig mogelijk lussen te hebben
-een while gebruiken met rare $i structuur ipv een for-lus
-niet genoeg specififieke functies gebruiken (met wat opzoekwerk kan je altijd functies vinden die je veel tijd besparen :), php barst van de zalige std-functies).

ook je manier van proggen is wat raar
($i+1) <= $aantal_fotos gebruiken

wtf zo raar, gebruik gewoon $i < $aantal_fotos

fakefun

Legacy Member
killgore zei:
n/o, ma die code zuigt :s

None taken ;) ge hebt gelijk, uw oplossing is veel eenvoudiger, bedankt daarvoor trouwens...

ja en dat met die ingewikkelde functies enzo dat is omdat ik nog nie zo lang php gebruik en nog niet zo bekend ben met alle functies ervan

killgore

Legacy Member
fakefun zei:
None taken ;) ge hebt gelijk, uw oplossing is veel eenvoudiger, bedankt daarvoor trouwens...

ja en dat met die ingewikkelde functies enzo dat is omdat ik nog nie zo lang php gebruik en nog niet zo bekend ben met alle functies ervan
daarom dat ik ook zei: veel opzoekingswerk (vooral in het begin) ;). Da leerde uiteindelijk wel, ge kunt toch onmogelijk alle functies uit uw hoofd lere :).

Al lang content da ge mijn opmerking deftig opneemt en positieve kritiek (aangezien ek u zeg wat er fout is :p) afkunt :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan