基本的に、これはデータベースの問題のように感じます。
パーセント列をNOTNULLとして設定し、0をデフォルトとして設定します。
ALTER TABLE promotions CHANGE COLUMN percent [maintain-its-type] NOT NULL DEFAULT '0';
次に、(問題を理解している場合は)各日付のMAX()およびMIN()パーセント値を抽出する必要があります。
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;
...私はそれをテストしていないので、いじる必要があるかもしれません。
次に、結果セットをループしながら、2つの別個のサブ配列を宣言し、完全な配列を構築できます。
$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;
}
この時点で、私はあなたの目的/使用法についてあまりにも多くの仮定をしました。基本的に、パーセントのデフォルトとしてゼロを設定し、各日付レートペアの最高と最低のパーセントをクエリします(ゼロの場合、ゼロは最高と最低として表示されます価値)。結果セットで好きなことをしてください。