最初の while ループが実行された後、 foreach ループ内の配列が設定解除されます (または、少なくとも配列ではなくなります)。
私が向かっているのは、開始日から毎日表示される棒グラフのデータの配列と、各日の種類別 (8 種類) のクリック数です。そのため、開始日から現在までの日数を計算しています。毎日、最初の配列をチェックして、その日にあったクリックの数 (ある場合) と、クリックの種類を確認します。
関連するコードは次のとおりです...
$i=0;
while($i<=$numdays)
{
echo $date2->format('Y-m-d') . "<br>";
foreach($clicklist as $key => $clicklist) {
if ( $clicklist[clickdate] === $date2 ) {
echo $clicklist[clicks]." clicks on ".$clicklist[type]." on that date<br>";
}
}
$date2->modify('+1 day');
$i++;
echo is_array($clicklist) ? 'Array<br>' : 'not an Array<br>';
}
$numdays は startdate から現在までの日数です (チャート変数の 1 つに必要です。$date2 は startdate で、$clicklist はデータベースからのクリック/日付/タイプの配列です。すべてのランダムなエコーはちょうどそうです何が起こっているかを見ることができます - または場合によってはそうではありません。
while ループは正常に機能しますが、分離は foreach ループも (変数の代わりに静的な日付を使用して) while ループの外でも正常に機能しますが、もちろん、それは 1 回だけの実行です。
マニュアルによると、 foreach はポインターを自動的に最初にリセットするため、問題はありません。
明らかな何かが欠けていると確信しています..どんなガイダンスも大歓迎です。