Для тех кто немного в теме - делаю по доте анти-страто подбиралку. То есть выбираешь пик героев оппонентов, функция анализирует, контрит самых важных, подбирает комбо-героев тем кто контрит, в соответствии с оставшимися ролями в комманде добирает необходимых, и предлагает несколько расстановок по линиям на выбор. До этапа расстановки всё работает, стратегию подбирает. Но вот дальше
Для тех кто не знаком с Дотой. Прошу не решить, а хотя бы подсказать идею, как построить логику процесса. Есть массив с подобранными героями и их свойствами в соответствующих ячейках. Примерно вот такой.
Array
(
[48] => Array
(
[role] => carry
[linerole] => Array
(
[0] => mid
[1] => easy
)
)
[11] => Array
(
[role] => tank
[linerole] => Array
(
[0] => hard
[1] => easy
)
)
[72] => Array
(
[role] => support
[linerole] => Array
(
[0] => roam
)
)
[64] => Array
(
[role] => nuker
[linerole] => Array
(
[0] => mid
)
)
[30] => Array
(
[role] => carry
[linerole] => Array
(
[0] => easy
)
)
)
И есть дерево условий вот такое(просьба сильно не ржать, художественная жилка у меня напрочь отсутствует)
http://gyazo.com/38b079871c0d71642c043f215594990c
Собственно сделать что-то типа
foreach ($array as $k=>$v){
if(корневое_условие){
тут еще один if
}
}
не выйдет, потому что ключ меняется, все условия обсчитываются заново. поиск в массиве по куче разных условий я не накурил в мануалах. Писать функцию под каждое условие? как-то нелогично, и даже есть, то как их организовать.
В общем собственно в этом и вопрос. буду рад любым идеям.