2017-01-29 7 views
1

machen.ein mehrdimensionales Array php mysql

date  | rate | percent 

2017-01-06 500  0 
2017-01-07 500  0.10 
2017-01-07 500  0.15 

Wie ich dieses Array machen kann, ich mit php bin Tring, aber ich kann das nicht tun, ich kann es tun, mit einer Dimension Array, aber nicht ein mehrdimensionales Array wie diese

Array 
(
    [1] => Array 
     (
      [0] => Array 
       (
        [date] => 2017-01-06 
        [rate]=>500 
        [percent] => 0.00 
       ) 

      [1] => Array 
       (
        [date] => 2017-01-07 
        [rate]=>500 
        [percent] => 0.10 
       ) 
    [2] => Array 
     (
      [0] => Array 
       (
        [date] => 2017-01-06 
        [rate]=>500 
        [percent] => 0.00 
       ) 

      [1] => Array 
       (
        [date] => 2017-01-07 
        [rate]=>500 
        [percent] => 0.15 
       ) 

      ) 
) 
+0

Können Sie Ihre PHP MySQL Query hinzufügen? – Nenroz

+1

Was ist die Logik hinter diesem mehrdimensionalen Array? Auch, wie @Nenroz erwähnt ^, füge den * relevanten * PHP-Code hinzu. –

+2

Was repräsentiert dieses Array? Wie sollten sie gruppiert werden? Es ist schwer zu erkennen, wofür du ohne Erklärung bist. Sie haben drei Ergebnisse in der Datenbank, die in vier Elementen im Array dargestellt werden sollen? –

Antwort

0

Es ist eine Frage von (wenn ich das Problem verstehe), die MAX() und MIN() Prozentwerte für jedes Datum zu wählen. Dazu müssen Sie GROUP BY verwenden.

SELECT s.date, s.rate, MAX(p.percent) AS maxperc, MIN(p.percent) AS minperc 
    FROM stock s 
    LEFT JOIN promotions p ON s.date = p.date 
    WHERE s.date BETWEEN '2017-01-29' AND '2017-01-31' 
    GROUP BY s.date,s.rate; 

... Ich habe das nicht getestet, also muss es vielleicht ein wenig herumspielen.

Wenn Sie dann Ihre Ergebnismenge durchlaufen, können Sie die zwei separaten Subarrays deklarieren und Ihr komplettes Array erstellen.

$array=[]; 
$i=0; 
while($row=mysqli_fetch_assoc($result)){ 
    $array[0][$i]["date"]=$row["date"]; 
    $array[0][$i]["rate"]=$row["rate"]; 
    $array[0][$i]["perc"]=$row["minperc"]; 
    $array[1][$i]["date"]=$row["date"]; 
    $array[1][$i]["rate"]=$row["rate"]; 
    $array[1][$i]["perc"]=$row["maxperc"]; 
    ++$i; 
} 

Zu diesem Zeitpunkt habe ich zu viele Annahmen über Ihren Zweck/Verwendung gemacht. Setzen Sie im Grunde Null als prozentualen Standard, Abfrage für höchste und niedrigste Prozent für jedes Datum-Rate-Paar (wenn Null, dann wird Null als höchste und niedrigste Wert angezeigt). Mach was du willst mit dem Ergebnisset.

+0

@AngelValdez Ich habe diese Frage nur nach der Beantwortung Ihrer mehr oder weniger doppelten Frage bei http://stackoverflow.com/questions/41923911/multidimensional-array-query-mysql gefunden. Die gleiche Frage auf SO erneut zu stellen ist ein No-No. Bitte nehmen Sie sich die Zeit, um Ihre Fragedetails in diese Frage einzubinden (weil diese Frage eine Upvote hat) und löschen Sie die andere Frage. – mickmackusa

+0

@AngelValdez Wenn meine Lösung Ihr Problem löst, vergeben Sie bitte das grüne Häkchen (und möglicherweise eine Verbesserung, um hilfreich zu sein). Ansonsten bitte erklären Sie, was noch nicht funktioniert. – mickmackusa

+0

Geez, ich habe gerade dein Profil überprüft und du hast dieselbe Frage gestellt: links, rechts, seitwärts, Englisch und Spanisch. Bitte, bitte, füge bitte deine Fragen zusammen, damit SO nicht unnötig aufgebläht wird. – mickmackusa