Ich habe mehrere Lösungen ausprobiert, die ich gefunden habe, und keine scheint zu funktionieren. Kann mir jemand helfen? Ich möchte, dass das Ergebnis die IDs ($user
) und derzeit den [object Object]
mit dem folgenden Code zurückgibt. $users
gibt mir alle Benutzer-IDs der Site und $pageview
gibt an, wie oft die Seite besucht wurde. Wenn ich die return-Anweisung in $test
ändere, werden alle Werte von $pageview
korrekt abgerufen. Das Hinzufügen des Schlüssels 'count'
als $pageview
ist erforderlich, damit ich das Array nach dem Wert von pageview
sortieren kann, um die Werte basierend auf der beliebtesten Seite zu sortieren. Ich weiß, dass dies nicht der effizienteste Weg ist und die Verwendung eines geeigneten Analysesystems besser wäre, aber für diese Aufgabe benötige ich eine Methode wie diese.
if($args == 'Popular'){
$users = get_all_user_ids('');
foreach($users as $user) {
$pageview = get_user_meta($user, 'page_visits', true);
$test[] = $pageview;
if ($pageview != 0) {
$popularid[$pageview]['count'] = $user;
} else {
continue;
}
rsort($popularid);
}
return $popularid;
}
Die Ausgabe wird mit json_encode
codiert, nachdem sie diese if-Anweisung durchlaufen hat, und dann mit document.getElementById("cm-output").innerHtml
in einer JS-Funktion auf der Seite ausgegeben.
Danke im Voraus.
Versuchen wir den folgenden Code:
$users = get_all_user_ids('');
$i=0; // initialization
foreach($users as $user) {
$pageview = get_user_meta($user, 'page_visits', true);
if ($pageview != 0) {
//$popularid[$pageview]['count'] = $user; // Err: // Array won't be unique due to pageview might be same for multiple users
// $popularid[$user] = $pageview; // Array will be unique based on user id
$popularid[$i]['user'] = $user;
$popularid[$i]['pageview'] = $pageview;
$i++; // incrementor
}
}
//rsort($popularid); // Sorts based on value
usort($popularid, function($a, $b) {
return $a['pageview'] - $b['pageview'];
});
$userArr = array_column($popularid, 'user');
//return $popularid;
return $userArr;
Update: Core PHP Codebeispiel für usort
$array[] = array('pageview'=>4,'user'=>'abc');
$array[] = array('pageview'=>2,'user'=>'xyz');
$array[] = array('pageview'=>1,'user'=>'pqrs');
$array[] = array('pageview'=>3,'user'=>'ijk');
usort($array, function($a, $b) {
return $a['pageview'] - $b['pageview'];
});
$userArr = array_column($array, 'user'); // to get only the values from user key
print_r($userArr);