値の配列で最大の連勝と連敗を計算するためのこのコードを作成しました。しかし、1 回の foreach ループで頭を悩ませることができます。現在、次のように2つのループを使用しています:
public function calculateStreaks()
{
$max_win_streak = 0;
$_win_streak = 0;
$max_loss_streak = 0;
$_loss_streak = 0;
foreach($this->all_trades_pnl as $value){
if($value >= 0) {
$_win_streak++;
if($_win_streak > $max_win_streak){
$max_win_streak = $_win_streak;
}
}
else {
$_win_streak = 0;
}
}
foreach($this->all_trades_pnl as $value){
if($value < 0) {
$_loss_streak++;
if($_loss_streak > $max_loss_streak) {
$max_loss_streak = $_loss_streak;
}
}
else {
$_loss_streak = 0;
}
}
return array('win_streak' => $max_win_streak, 'loss_streak' => $max_loss_streak);
}
動作しますが、最適化にはほど遠いようです。これをより適切にコーディングするためのアイデアはありますか? よろしくお願いします、ジョン