Спасибо, мое решение на PHP:
foreach ($data as $employeeid => $rows) { sort($rows); for ($i = 0; $i < count($rows); $i++) { $tool1Found = $tool2Found = false; if ($i > 0) { $previousSetup = $rows[$i - 1]; $previousSetup2 = $rows[$i - 2]; $tool1Found = in_array($rows[$i]['Tool1Identifier'], $previousSetup) || in_array($rows[$i]['Tool1Identifier'], $previousSetup2); $tool2Found = in_array($rows[$i]['Tool2Identifier'], $previousSetup) || in_array($rows[$i]['Tool2Identifier'], $previousSetup1); } echo sprintf('<br />%s <span style="color: %s;">%s</span> <span style="color: %s;">%s</span>', ($i + 1), ($tool1Found ? 'green' : 'red'), $rows[$i]['Tool1Identifier'], ($tool2Found ? 'green' : 'red'), $rows[$i]['Tool2Identifier']); } } |
рони,
Ваш код не работает с массивом var arr = [[265,205],[265,205],[265,205],[205,205],[265,203],[265,203],[265,203],[203,45]]; Результат 6, а у вас 3. 265 205 205 265 203 45 |
Sav2907,
почему 6 а не 4? |
Sav2907,
0,205,265,true 1,205,265,false 2,205,265,false 3,205,205,true 4,203,265,true 5,203,265,false 6,203,265,false 7,45,203,true |
Цитата:
|
рони,
205 265 205 203 265 45 |
laimas,
верно, поэтому новый код echo ' <table><tr><td>Заказ</td><td>Апликатор 1</td><td>Апликатор 2</td></tr> '; foreach ($data as $employeeid => $rows) { sort($rows); for ($i = 0; $i < count($rows); $i++) { $tool1Found = $tool2Found = false; if ($i > 0) { for ($j = $i - 1; $j >= 0; $j--) { $previousSetup = $rows[$j]; $tool1Found = $tool1Found || in_array($rows[$i]['Tool1Identifier'], $previousSetup); $tool2Found = $tool2Found || in_array($rows[$i]['Tool2Identifier'], $previousSetup); if ($previousSetup['Tool1Identifier'] !== '' && $previousSetup['Tool2Identifier'] !== '') break; } } echo sprintf('<tr><td>%s</td><td><span style="color: %s;">%s</span></td><td><span style="color: %s;">%s</span></td></tr>', ($i + 1), ($tool1Found ? 'green' : 'red'), $rows[$i]['Tool1Identifier'], ($tool2Found ? 'green' : 'red'), $rows[$i]['Tool2Identifier']); } } echo '</table>'; |
Результат на более тяжелом примере
![]() |
А чем это по сути отличается от предыдущего?
sort($rows); - это ведь пустое и никчемное действие, если судить по структуре массива представленного ранее. Я так и не понял закономерности этой кухни, но, если записи возвращаются в произвольном порядке, то вхождения каждой итерации нужно искать во всем массиве. При этом, если нечто удовлетворяющее условию в нем найдено и это считается уникальностью, то она должна исключаться из исходного массива. |
laimas,
отличается тем, что проверяется весь массив. А на счет sort($rows);, вы правы :victory: |
Часовой пояс GMT +3, время: 23:43. |