J'ai essayé plusieurs solutions que j'ai trouvées autour et aucune ne semble fonctionner. Quelqu'un peut-il me donner de l'aide? Je veux que le résultat retourne l'ID ($user
) et qu'il renvoie actuellement [object Object]
avec le code ci-dessous. $users
me donne tous les ID utilisateur du site et $pageview
indique le nombre de fois que la page a été visitée. Si je change l'instruction de retour en $test
, toutes les valeurs de $pageview
sont correctement obtenues. La nécessité d'ajouter la clé 'count'
en tant que $pageview
permet de trier le tableau en fonction de la valeur pageview
afin de classer les valeurs en fonction de la page la plus populaire. Je sais que ce n'est pas le moyen le plus efficace de le faire et qu'il serait préférable d'utiliser un système d'analyse approprié, mais pour cette tâche, j'ai besoin d'une méthode comme celle-ci.
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;
}
La sortie est codée avec json_encode
après avoir parcouru cette instruction if et est ensuite affichée sur la page dans une fonction JS à l'aide de document.getElementById("cm-output").innerHtml
.
Merci d'avance.
Essayons le code ci-dessous,
$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;
Mise à jour: Core PHP exemple de code pour 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);