web-dev-qa-db-ger.com

PHP Array Rückgabe [Objekt Objekt]. Versuchte bestehende Antworten ohne Glück

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.

1
M. F.

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