Niestety kurczę, nie działa mi to @kreatiff.
Natomiast @ctom - ta opcja jednak mnie nie ratuje, aczkolwiek działa, przepraszam za wprowadzenie w błąd.
Może pokażę kod i ktoś mi coś podsunie...
function prepare_army_to_farm($village_id)
{
global $server, $farm_cap, $farm_army_info;
$available_army = get_village_army($village_id);
$all_farm_cap = 0;
if ( $available_army === FALSE )
{
return FALSE;
}
foreach($available_army AS $name_army => $available)
{
{
$army_cap = $farm_army_info[$name_army]['cap'];
$all_farm_cap = $all_farm_cap+$army_cap*$available;
}
}
$count_all_attacks = ceil($all_farm_cap/$farm_cap);
$n = 0;
for($i=0; $i<=$count_all_attacks-1; $i++)
{
foreach($available_army AS $name_army => &$available)
{
{
continue;
}
else
{
$army_cap = $farm_army_info[$name_army]['cap'];
if ( (($farm_cap-$n) / $army_cap) > $available )
{
$army_to_farm[$name_army] = $available;
if ( $available_army[$name_army]-$available == 0 )
{
$available = 0;
}
$n = $n+($available*$army_cap);
}
else if ( (($farm_cap-$n) / $army_cap) == $available )
{
$army_to_farm[$name_army] = $available;
$available_army[$name_army] = $available_army[$name_army]-$available;
break;
}
else if ( (($farm_cap-$n) / $army_cap) < $available )
{
$need_army = round(($farm_cap-$n)/$army_cap);
$army_to_farm[$name_army] = $need_army;
$available_army[$name_army] = $available_army[$name_army]-$need_army;
break;
}
}
}
$final_array[] = $army_to_farm;
}
return $final_array;
}
Problem jest w linii ~42. Jak widać, wszystkie warunki mają
break, więc aktualizacja tablicy pomaga bo następny przelot bierze już pod uwagę fakt, że zmieniłem wartości w tablicy. Warunek w okolicy linii ~42 jednak nie jest kończony za pomocą break i tam jest problem. Chcę, aby gdy
$available - $available wynosi 0, skrypt przeszedł do następnego rekordu. Jednak po przejściu do następnego rekordu, skrypt się zapętla po prostu i stoję w miejscu przez wszystkie przeloty pętli...
Tutaj jest wynik tego kodu powyższego:
Cytat
array(5) {
[0]=>
array(1) {
["spear"]=>
float(12)
}
[1]=>
array(1) {
["spear"]=>
float(12)
}
[2]=>
array(3) {
["spear"]=>
float(7)
["sword"]=>
string(1) "7"
["axe"]=>
float(30)
}
[3]=>
array(3) {
["spear"]=>
float(7)
["sword"]=>
string(1) "7"
["axe"]=>
float(30)
}
[4]=>
array(3) {
["spear"]=>
float(7)
["sword"]=>
string(1) "7"
["axe"]=>
float(2)
}
}
Jak widać 2 tablica przyjęła jakieś tam wartości i reszta się powtarza bo linia ~42 nie potrafi zatrybić, że tam jest po prostu 0, dla niej co przelot ta wartość wynosi 7 i skrypt stoi w miejscu zamiast gnać dalej. Nie mam pomysłu już jak to zrobić.
@UP Twoja propozycja mi nie działa, gdyby działała to przypuszczalnie by to poszło bo wtedy daję znać do skryptu, że ta wartość nie wynosi 7, tylko 0 i wtedy ten warunek z linii 31 zrobi swoje dalej.