[PHP] Array sorteren en aantal optellen.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kom er maar niet uit om de volgende array te sorteren en dan ook nog eens de gelijke aantallen op te tellen. De array ziet er als volgt uit:

$array_postcode = array ("5623","5660","5623","5633","5620","5633","5660");

De output moet er als volgt uit gaan zien:

5620 = 1
5623 = 3
5633 = 1
5660 = 2

Wie kan mij helpen? 8)7

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
PHP:
1
2
3
4
5
$result=array();
foreach($array_postcode as $pc){
   $result[$pc]=isset($result[$pc])?$result[$pc]+=1:1;
}
var_dump($result);


Zoiets??

Tsja, zie hieronder...... heb ik ook weer wat geleerd....

[ Voor 121% gewijzigd door beetle71 op 30-09-2003 22:53 ]


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 09:24

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

[insert :z here]

Arjen achtervolg me niet :P

[ Voor 30% gewijzigd door Thijsmans op 30-09-2003 22:50 ]

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 23-08 22:47

dArtagnan

Een voor allen, allen voor een

Daar heeft php een prachtige functie voor, namelijk array_count_values()
http://nl2.php.net/manual/nl/function.array-count-values.php

Daarna even een sort() eroverheen gooien en je bent klaar.

offtopic:
Wie, ikke? :+

[ Voor 24% gewijzigd door dArtagnan op 30-09-2003 22:52 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ik hoor fluisteren dat ze wel van PHP houden in Programming & Webscripting

W&G --> P&W :*

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op dit moment heb ik er zoiets van gemaakt. In de database staan de postcode als 5623CA vermeld en heb met substr er 5623 van gemaakt. Alleen dit zijn zo'n hoop postcodes die ik nu als output krijg:

5623562656535627562756425626562356275623564356165651565456435652

Ten eerste wil ik ze van elkaar scheiden dan in een array, dan sorteren en aantallen vergelijkende postcodes laten outputten.

De code die ik op dit moment heb is hetvolgende:


$query_aanmeldingen = mysql_query("SELECT * from aanmelden where woonplaats = '".$plaats."'");
$aantal_aanmeldingen = mysql_num_rows($query_aanmeldingen);
while ($result_aanmeldingen = mysql_fetch_array($query_aanmeldingen)) {
$postcode = $result_aanmeldingen['postcode'];
$postcode = substr($postcode,0,4);
if (!$postcode OR $postcode == '') echo "";
else echo $postcode;
}

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 13:26

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
PHP:
1
2
3
4
5
6
7
8
$query_aanmeldingen = mysql_query("SELECT * from aanmelden where woonplaats = '".$plaats."'"); 
$aantal_aanmeldingen = mysql_num_rows($query_aanmeldingen);
while ($result_aanmeldingen = mysql_fetch_array($query_aanmeldingen)) {
$postcode = $result_aanmeldingen['postcode'];
$postcode = substr($postcode,0,4); 
if (!$postcode OR $postcode == '') echo "";
else echo $postcode;
}


Tussen haken veel makkelijker te bekijken. Ten eerste heb je de if statement niet netjes geopend en als true uit een ifstatement komt en je wilt daar niks mee doen, doe dan niet echo "" (een lege echo). Beetje vieze oplossing imo

Voor de rest laat ik het over aan de expert en kruip ik weer achter mijn php boek :P

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Mmm, als ik dit nogmaals bekijk kun je dit ook in 1 keer oplossen door de goede SQL-query te gebruiken :)
code:
1
2
"select left(postcode,4) as pccijfers, count(*) as aantal from aanmelden  
   where woonplaats = '".$plaats."' group by pccijfers order by pccijfers";

cijfers maar even door pccijfers vervangen, was een typo ;)

edit:

Dan hebben we die tegelijkertijd geedit ;) Thanks anyway

edit:

edit2: Nu heb ik dat mooie modbreak blauw weer vernaggeld >:) :'(

@ccroz: zet je code tussen [ php ] en [ /php ] (spaties weglaten) dan krijgen we een mooiere opmaak hier.

edit:

[Glimi] Nu niet meer ;)

[ Voor 101% gewijzigd door Glimi op 01-10-2003 00:18 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[
$query_aanmeldingen = mysql_query("select left(postcode,4) as pccijfers, count(*) as aantal from aanmelden where woonplaats = '".$plaats."' group by cijfers order by pccijfers");
while ($result_aanmeldingen = mysql_fetch_array($query_aanmeldingen)) {
echo $result_aanmeldingen['postcode']." ".$result_aanmeldingen['aantal'];
}
]

Die mysql oplossing is helemaal te gek! Maar hoe krijg ik dat nu in output vorm, want bovenstaande geeft geen output maar een error.

Output liefst zoals dit:

Postcode = aantal


Totzover al hartstikke bedankt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hartstikke bedankt beetle71 je bent geweldig! Voor de liefhebbers de uiteindelijke code:

PHP:
1
2
3
4
5
6
<? 
                $query_aanmeldingen = mysql_query("select left(postcode,4) as pccijfers, count(*) as aantal from aanmelden where woonplaats = '".$plaats."' group by pccijfers order by pccijfers"); 
                while ($result_aanmeldingen = mysql_fetch_array($query_aanmeldingen)) {
                echo $result_aanmeldingen['pccijfers'].": ".$result_aanmeldingen['aantal']."<BR>";
                }
                ?>


Bedankt allemaal voor jullie medewerking!

[ Voor 24% gewijzigd door Verwijderd op 30-09-2003 23:41 ]

Pagina: 1