[PHP] multi-array sorteren én variabele array id

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Met dank aan GoT, heb ik de volgende multi-array, welke automatisch gesorteerd wordt op de waarde "geld":
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php 
function cmp($a, $b)
{
  if ($a['geld'] == $b['geld'])
  {
    return 0;
  }
  return ($a['geld'] > $b['geld']) ? -1 : 1;
}

$multiarray = array(

'id01' => array
('name' => 'piet',
 'geld' => '16',),

'id02' => array
('name' => 'jan',
 'geld' => '65',),

'id03' => array
('name' => 'henk',
 'geld' => '09',),

'id04' => array
('name' => 'erik',
 'geld' => '02',),

);
uasort($multiarray, "cmp");
?>

Dit werkt goed, als ik "print_r ($multiarray);" doe dan staat de array van jan boven die van piet. Alleen nu moet er ook iets aan het uitlezen veranderen en ik weet niet hoe ik dat het beste kan doen.

Het uitlezen gebeurt namelijk in een tabel op de volgende manier:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<tr>
<td>naam: <?php echo $multiarray['id01']['name']; ?></td>
<td>geld: <?php echo $multiarray['id01']['geld']; ?></td>

<td>naam: <?php echo $multiarray['id03']['name']; ?></td>
<td>geld: <?php echo $multiarray['id03']['geld']; ?></td>
</tr>

<tr>
<td>naam: <?php echo $multiarray['id02']['name']; ?></td>
<td>geld: <?php echo $multiarray['id02']['geld']; ?></td>

<td>naam: <?php echo $multiarray['id04']['name']; ?></td>
<td>geld: <?php echo $multiarray['id04']['geld']; ?></td>
</tr>

Het is de bedoeling dat degene met de hoogste waarde van geld ook bovenaan in de tabel komt te staan, dus op de volgorde hoe de arrays worden gesorteerd.

Mijn gedachte is dat de arraynummers variabel gemaakt moeten worden, dus 'idxx' en dat na het sorteren, een functie dan de bovenste 'id01' maakt, die daar onder 'id02', etc. Op die manier zou ik niets hoeven te veranderen aan het uitlezen. Maar volgens mij gaat dit niet zo makkelijk, zijn er tips hoe ik op een betere/makkelijkere manier toch het gewenste resultaat kan bereiken?

[ Voor 6% gewijzigd door Ruzor op 07-03-2007 17:14 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

Verwijderd

Als ze eenmaal gesorteerd zijn kun je toch gewoon de array afdrukken met bijv een each()?

Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Ja dat was ik nog vergeten te zeggen, de arrays kunnen niet uitgelezen worden op de volgorde waarin deze staan. De tabel waarin de array's gebruikt worden heeft namelijk meerdere kolommen, dus deze output:
code:
1
2
1 3
2 4


Terwijl de html code er dan zo uitziet:
code:
1
2
3
4
5
6
7
8
9
<tr>
<td>1</td>
<td>3</td>
</tr>

<tr>
<td>2</td>
<td>4</td>
</tr>


EDIT: Heb het even aangepast in de topicstart.

[ Voor 10% gewijzigd door Ruzor op 07-03-2007 17:15 ]

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

Verwijderd

Mss een idee om eerst twee oneven keys uit te lezen (en af te drukken) en daarna twee even keys (en die afdrukken?

Acties:
  • 0 Henk 'm!

  • Ruzor
  • Registratie: Februari 2003
  • Niet online

Ruzor

Off with his head man

Topicstarter
Hmmm, bedankt voor het meedenken, maar ik heb de tabel hier een beetje ingekort. In de werkelijkheid gaat het om een tabel met 3 kolommen en iets van 8 rijen. Dus die oplossing gaat helaas niet op.

[This is what you get when you mess with us]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Die oplossing gaat wel op, het enige verschil is dat je niet met 2 moet verhogen, maar met 3.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1