web-dev-qa-db-fra.com

PHP Tableau renvoyant [objet Objet]. Essayé réponses existantes résultats sans succès

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.

1
M. F.

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);
0
Tamilvanan N