SiteNotWorking Posted November 28, 2023 Share Posted November 28, 2023 I have this table I created. What I am trying to do is sum the probability based on a lineup, however I am not sure the best way to go through each position and I am struggling on wrapping my brain around the best method. I.E say I have a lineup that is QB(mvp),WR,WR,RB,K There is one MVP position per Lineup and the rest are flex. In my table, you will notice 1,2,3 which correspond to the occurrences of that position. After each number there is a probability column. That is what I need to try and add. So for my lineup example I need to look at the MVP column, find QB, then follow the WR from the flex column, all the way to the probab 2 column (because there is 2 WR) which would give me a probability of 8.67%. Next up there is one RB. So I need to go to mvp column, look at QB, then flex column RB, then probab 1 column which gives 11.22%. Lastly there is 1 K, so do the same thing which gives me 3.81%. 8.67+11.22+3.81 = 23.7 One way I am thinking is having variables for each such as $qbrb1,$qbrb2,$qbrb3 $qbwr1,$qbwr2,$qbwr3 etc. Then I would do something like $qbrb1 = 11.22 If (mvpPosition == 'QB' && rbCounts = 1) { Sum1 = $qbrb1 } This could get a little tedious going through each case though, so I am looking for ideas and would appreciate any feedback. Quote Link to comment https://forums.phpfreaks.com/topic/317491-assistance-thinking-this-through/ Share on other sites More sharing options...
SiteNotWorking Posted November 28, 2023 Author Share Posted November 28, 2023 $qbrb1 = 11.22; $qbrb2 = 3.91; $qbrb3 = .15; $qbte1 = 5.17; $qbte2 = .80; $qbte3 = 0; $Sum1 = 0; $Sum2 = 0; $Sum3 = 0; $Sum4 = 0; $Sum5 = 0; $Sum6 = 0; if ($index === 0 && $player["position"] === 'QB' && $position_counts['RB'] == 1) { $Sum1 = $qbrb1; } if ($index === 0 && $player["position"] === 'QB' && $position_counts['RB'] == 2) { $Sum2 = $qbrb2; } if ($index === 0 && $player["position"] === 'QB' && $position_counts['RB'] == 3) { $Sum3 = $qbrb3; } if ($index === 0 && $player["position"] === 'QB' && $position_counts['TE'] == 1) { $Sum4 = $qbte1; } if ($index === 0 && $player["position"] === 'QB' && $position_counts['TE'] == 2) { $Sum5 = $qbte2; } if ($index === 0 && $player["position"] === 'QB' && $position_counts['TE'] == 3) { $Sum6 = $qbte3; } That would be 2 out of 36 for example Quote Link to comment https://forums.phpfreaks.com/topic/317491-assistance-thinking-this-through/#findComment-1613186 Share on other sites More sharing options...
gizmola Posted November 28, 2023 Share Posted November 28, 2023 I'm not entirely sure what you are asking here, but PHP has arrays that are extremely flexible. An array element can contain a nested array, and you can also have multi-dimensional arrays. You can also mix arrays and class objects together, as in having a class, creating an object of that class and assigning it to an array, such that you have an array of objects. Either of these ideas could help you represent the data you have in your table. Arrays can be easily traversed using for loops or foreach. 1 Quote Link to comment https://forums.phpfreaks.com/topic/317491-assistance-thinking-this-through/#findComment-1613188 Share on other sites More sharing options...
Solution Barand Posted November 29, 2023 Solution Share Posted November 29, 2023 I agree with Gizmola^. Using a multidimensional array ... $probs = [ 'QB' => [ 'RB' => [ 1 => 11.22, 2 => 3.91, 3 => 0.15 ], 'TE' => [ 1 => 5.17, 2 => 0.80, 3 => 0.00 ], 'QB' => [ 1 => 9.44, 2 => 0.00, 3 => 0.00 ], 'WR' => [ 1 => 10.46, 2 => 8.67, 3 => 4.53 ], 'K' => [ 1 => 3.81, 2 => 0.19, 3 => 0.00 ], 'D' => [ 1 => 2.85, 2 => 0.07, 3 => 0.00 ] ] // rinse and repeat with the other MVPs and FLEXs ]; $lineup = 'QB, WR, WR, RB, K'; $arr = array_map('trim', explode(',', $lineup)); $mvp = array_shift($arr); $counts = array_count_values($arr); $probability = 0; foreach ($counts as $p => $n) { $probability += $probs[$mvp][$p][$n]; } echo '<br>'.$probability; // 23.7 1 1 Quote Link to comment https://forums.phpfreaks.com/topic/317491-assistance-thinking-this-through/#findComment-1613190 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.