Nagaan hoe vaak dezelfde waarde in een array voorkomt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Steven Hoogervorst

Steven Hoogervorst

19/05/2013 14:51:41
Quote Anchor link
Dag allemaal!

Hoe kun je in php nagaan hoe vaak dezelfde waarde in een array voorkomt en het aantal in een array zetten?
array_count_values heb ik geprobeerd, zonder resultaat.

voorbeeld:
foreach($gaResults as $result) {
echo $result->getSource();
}
uitkomst:
google
google
(direct)
(direct)
(direct)
google
google

Zet aantallen in array:

Bron Google komt 4x voor
Directe bezoekers komen 3x voor

$array = array('google' => '4', '(direct)' => '3');


Alvast bedankt!

Groet, Steven
Gewijzigd op 19/05/2013 14:57:53 door Steven Hoogervorst
 
PHP hulp

PHP hulp

25/12/2024 20:34:09
 
Willem vp

Willem vp

19/05/2013 15:34:21
Quote Anchor link
Laten we even aannemen dat de array waarvan de waardes geteld moeten worden $results heet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$results
= array('google','google','(direct)','(direct)','(direct)','google','google');
$rcnt = array_count_values($results);
print_r($rcnt);
?>

Array ( [google] => 4 [(direct)] => 3 )
 
Steven Hoogervorst

Steven Hoogervorst

19/05/2013 15:35:51
Quote Anchor link
Kan ik in plaats van print_r ook echo gebruiken?
 
Willem vp

Willem vp

19/05/2013 15:39:33
Quote Anchor link
Tuurlijk, dit was puur even om aan te geven dat $rcnt een array is met de gevraagde waardes. Je kunt de afzonderlijke waardes ophalen met $rcnt['google'] en $rcnt['(direct)'].
 
Steven Hoogervorst

Steven Hoogervorst

19/05/2013 15:40:11
Quote Anchor link
Want nu wil ik eigenlijk hetgeen dat bij print_r uitkomt in een array zetten:
$array = array('google' => '4', '(direct)' => '3');

Toevoeging op 19/05/2013 15:46:22:

Wat ik nu heb is dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($gaResults as $result) {
    $rcnt = array_count_values($result->getSource());
    echo $rcnt['google'];
}

?>

Maar dit heeft geen enkele waarde...
Gewijzigd op 19/05/2013 15:57:06 door Steven Hoogervorst
 
John D

John D

19/05/2013 16:04:07
Quote Anchor link
Waar komen deze waardes vandaan? Toch niet uit je database hoop ik?
 
Steven Hoogervorst

Steven Hoogervorst

19/05/2013 16:06:04
Quote Anchor link
Nee, van Google. Gebruik de Google API.

Toevoeging op 19/05/2013 16:12:16:

gapiReportEntry Object (
[metrics:gapiReportEntry:private] =>
Array ( [visits] => 1 )
[dimensions:gapiReportEntry:private] =>
Array (
[date] => 20130506
[source] => google
[country] => Netherlands
[region] => Overijssel
[city] => Hengelo
) )

Dit is een deel dat ik krijg als ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? php print_r($result); ?>
doe

Toevoeging op 19/05/2013 16:15:17:

Het lijkt erop dat er per datum een aparte array wordt aangemaakt...

Toevoeging op 19/05/2013 16:23:18:

De output die ik krijg bij
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print_r($result->getSource()); ?>
is dit:


googlegoogle(direct)(direct)(direct)googlegooglewinkelcentrumhasselo.nlgoogle(direct)(direct)googlegooglekulturhushasselo.nlsearch.certified-toolbar.com(direct)avggooglekulturhushasselo.nlgooglegooglekulturhushasselo.nl(direct)(direct)avggooglegooglegooglewijkwegwijs.nlwinkelcentrumhasselo.nl

Toevoeging op 19/05/2013 16:46:29:

Heb 't voor elkaar gekregen!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$resultSource
= NULL;
foreach($gaResults as $result) {
$resultSource .= $result->getSource().' ';
}

$arraySources = explode(' ',$resultSource);
print_r(array_count_values($arraySources));

?>


Toevoeging op 19/05/2013 16:46:57:

Iedereen bedankt voor de hulp!
Gewijzigd op 19/05/2013 16:47:46 door Steven Hoogervorst
 
Willem vp

Willem vp

19/05/2013 17:24:49
Quote Anchor link
Steven Hoogervorst op 19/05/2013 15:40:11:
Want nu wil ik eigenlijk hetgeen dat bij print_r uitkomt in een array zetten:
$array = array('google' => '4', '(direct)' => '3');

Je bent lekker omslachtig bezig. ;-) print_r toont namelijk de inhoud van de array $rcnt, dus wat je wilt hebben, heb je al lang. Dat is de array $rcnt (uitgaande van de code uit mijn eerste bericht).

De code uit je laatste bericht is ook omslachtig. Je haalt waardes op, zet ze in een string met spaties ertussen, en breekt vervolgens de string op in een array. Waarom zet je het dan niet meteen in een array? ;-)

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$resultSource
= array();
foreach($gaResults as $result) {
$resultSource[] = $result->getSource();
}

print_r(array_count_values($resultSource));
?>
 
Steven Hoogervorst

Steven Hoogervorst

19/05/2013 19:04:27
Quote Anchor link
Dit heb ik gedaan omdat het op andere manieren niet werkte. Door een nieuwe array te maken, kon ik het zó maken als ik wilde :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.