2016-09-08 9 views
1

Ich habe leider ein Problem mit meinem Code. Also ich habe ein Array mit rund 100 Schlüsseln in eine Variable $ data gespeichert, die wie folgt aussieht:30 Schlüssel von einem Array zu einer anderen Variablen speichern

["data"]=> 
    array(413) { 
    [0]=> 
    object(stdClass)#254 (7) { 
     ["Date"]=> 
     string(10) "2016-09-08" 
     ["Open"]=> 
     string(6) "771.00" 
     ["Close"]=> 
     string(6) "782.00" 
    } 
    [1]=> 
    object(stdClass)#254 (7) { 
     ["Date"]=> 
     string(10) "2016-09-07" 
     ["Open"]=> 
     string(6) "71.00" 
     ["Close"]=> 
     string(6) "82.00" 
    } 
    [2]=> 
    object(stdClass)#254 (7) { 
     ["Date"]=> 
     string(10) "2016-09-06" 
     ["Open"]=> 
     string(6) "571.00" 
     ["Close"]=> 
     string(6) "682.00" 
    } 
    [3]=> 
    object(stdClass)#254 (7) { 
     ["Date"]=> 
     string(10) "2016-09-05" 
     ["Open"]=> 
     string(6) "781.00" 
     ["Close"]=> 
     string(6) "702.00" 
    } 
    } 

Ich versuche, die ersten 30 ["Close"] Schlüssel zu speichern, aber ich brauche sie vom 30. bis zum ersten Schlüssel speichern , daher meine for-Schleife:

<?php 

    $lowValue = []; 
    for($i = 29; $i >= 0; $i--){ 
     foreach ($data->data[$i] as $obj) { 
      if (isset($obj->Close)) { 
      return $lowValue[] = $obj->Close; 
      } 
     } 
    } 

?> 
data: {!! json_encode(lowValue) !!} 

Das Ergebnis, das ich mit json_encode sparen müssen, weil ich es als Daten für eine highchart verwenden. Aber ich bekomme eine leere Variable, irgendwelche Ideen warum? Und eine andere Frage, die ich im Internet nachgeschlagen habe, aber auf die ich keine Antwort bekomme, kann ich json_encode auch für Funktionen verwenden? Bedeutung, wenn ich eine Funktion machen möchte, kann ich das als Parameter benutzen? Vielen Dank für Ihre Zeit, jede Hilfe ist willkommen! Nachdem ich den Code geändert haben: Daten:

    <?php 
        $lowValue = []; 
        foreach ($data->data as $obj) { 
         if (isset($obj->Close)) { 
          // add the element to the beginning of the array 
          array_unshift($lowValue, $obj->Close); 
         } 

         if(count($lowValue) >= 30) { 
          break; 
         } 
        } 
        echo json_encode($lowValue); 
     ?> 

Antwort

1

Bitte versuchen Sie dies:

$lowValue = []; 
foreach ($data->data[$i] as $obj) { 
    if (isset($obj->Close)) { 
     // add the element to the beginning of the array 
     array_unshift($lowValue, $obj->Close); 
    } 

    if(count($lowValue) >= 30) { 
     break; 
    } 
} 

echo json_encode(['data' => $lowValue]); 

In Bezug auf Ihre zweite Frage, die Sie auf SO eine andere Frage erstellen soll.

+0

Nach Ich habe ein bisschen daran gearbeitet, ich habe Ergebnisse, aber ich stoße immer noch auf ein Problem. In highcarts sollte das Ergebnis so aussehen: data: [22, 335, 11, 7547], stattdessen haben die Zahlen, die ich in diesem Array habe, dieses Format: data: ["22", "335"]. Ich muss sie nicht mehr zu Strings machen. Ich werde meine Frage so bearbeiten, wie mein Code jetzt aussieht. – Alphonse

+0

Vielen Dank für Ihre Zeit und Hilfe – Alphonse

0

Mit @mapek ‚s Hilfe und nachdem ich ein bisschen auf seinem Beispiel gearbeitet habe die Lösung in meinem Fall war:

data:<?php 
     $lowValue = []; 
     foreach ($data->data as $obj) { 
      if (isset($obj->Close)) { 
       // add the element to the beginning of the array 
       array_unshift($lowValue, $obj->Close); 
      } 

      if(count($lowValue) >= 30) { 
        break; 
      } 
     } 
     $low = array_map(create_function('$value', 'return (int)$value;'), 
            $lowValue); 
     echo json_encode($low); 
       ?> 

Welche meine Array zeigt wie folgt aus: data:[621, 512, 578] ...

Verwandte Themen