2016-05-26 8 views
0

Ich habe ein multidimensionales Array, aus dem ich einige Daten abrufen muss, machen Sie einige einfache Mathematik und zeigen Sie sie auf einem js Grafikdiagramm. Mein einziges Problem ist, dass ich die Daten von den Arrays nicht bekommen kann. Dies ist , wie Array aussieht:Schleifen eines php mehrdimensionalen Array und Extrahieren spezifischer Daten

object(stdClass) [211] 
     public 'countries' => 
      array (size=30) 
       0 => 
        array (size=1) 
        0 => 
         object(stdClass)[215] 
         public 'country' => string 'RO' (lenght=2) 
         public 'clicks' => int 4 

        1 => 
         object(stdClass)[215] 
         public 'country' => string 'RU' (lenght=2) 
         public 'clicks' => int 1 

       1 => 
        array (size=1) 
        0 => 
         object(stdClass)[215] 
          public 'country' => string 'RU' (lenght=2) 
          public 'clicks' => int 4 

        1 => 
         object(stdClass)[215] 
          public 'country' => string 'RO' (lenght=2) 
          public 'clicks' => int 2 

... und so weiter bis 29 (es sind 30 Tage), so dass jeder Tag hat Klicks aus verschiedenen Ländern. Was ich tun müssen, um die Daten aus dem Array in diesem Format zu extrahieren:

name: ['RO', 'RU'] 
data: [6, 5] 

Ich hoffe, Sie verstehen, was ich zu tun versuchen. Ich bin kein Experte, nur ein Anfänger und ich kann das nicht ausarbeiten.

EDIT: Am Ende muss ich sagen, dass x Land x Klicks auf den letzten 30 Tagen hat. Seien Sie sich bewusst, dass ich nicht weiß, Hexe Länder sind in der Reihe, weil dies von einer API ist, die die Top 10 Länder durch Klicks bietet. Also, an jedem Tag könnte ein Land sein, das nicht am Vortag war und so weiter.

EDIT 2: Das ist, was ich auf Grund meiner Erfahrung haben versucht:

function getCountriesByClicks($data) 
{ 
    $jsData = []; 
    $clicks = []; 
    $country = []; 
    for ($x = 0; $x < sizeof($data->data[0]->data->countries); $x++) { 
     foreach ($data->data[0]->data->countries[$x] as $value) { 
      array_push($country, $value->country); 
      array_push($clicks, $value->clicks); 
     } 

     $jsData[] = ['name' => $country, 'data' => $clicks]; 
    } 
    return json_encode($jsData); 
} 

die json Rückkehr ignorieren es in meinem Javascript graphisches Diagramm nur zu verwenden ist.

Vielen Dank!

+0

Verwendung foreach und sammeln die Daten ... –

+0

Ich weiß, dass, aber es ist nicht die Antwort, die ich suche. Gib mir bitte ein Beispiel! –

+0

Ich gebe dir die Antwort nicht .. –

Antwort

0

versuchen Sie Folgendes:

$name = array(); 
$data = array(); 
array_map(function($array){ 
    array_map(function($obj){ 
     $name[] = $obj->country; 
     $data[] = $obj->clicks; 
    },$array); 
},$yourObject->countries); 
Verwandte Themen