Работа с массивом (возможно foreach)

$lider

Бывает
Работа с массивом (возможно foreach)

Добрый день.
Есть массив $result:
PHP:
Array
(
    [2075] => Array
        (
            [sklad] => АПТЕКА №109
            [kol] => 33
        )
     [2076] => Array
        (
            [sklad] => АПТЕКА №150
            [kol] => 0
        )
     [2077] => Array
        (
            [sklad] => АПТЕКА №175
            [kol] => 30
        )
     [2078] => Array
        (
            [sklad] => АПТЕКА №176
            [kol] => 99
        )
 )
Всего 162.
При равномерном распределении должно быть по 40.5 (162/count($result))
Нужно указать какое количество и в какую аптеку отдать.
Не могу добиться (построить foreach) для распределения количества.

p.s. можно добить элементами массива или в новый, не существенно.
p.p.s донором могут быть и несколько аптек (АПТЕКА №109 (14) АПТЕКА №150 (15) АПТЕКА №175 (0) АПТЕКА №176 (24))
 

$lider

Бывает
Пока есть это:
PHP:
Array (
[2075] => Array ( [sklad] => АПТЕКА №109 [kol] => 33 [nado] => -7 )
 [2076] => Array ( [sklad] => АПТЕКА №150 [kol] => 0 [nado] => -40 ) 
[2077] => Array ( [sklad] => АПТЕКА №175 [kol] => 30 [nado] => -10 ) 
[2078] => Array ( [sklad] => АПТЕКА №176 [kol] => 99 [nado] => 59 ) )
 

Adelf

Administrator
Команда форума
$lider
nado у тебя неправильное. или ты вынужден целыми числами только?
В таком случае создаются два массива тех кому надо и тех кто может дать. Сортируются и начиная с максимальных передается.
В данном случае
59
и
-40
-10
-7

Потом
19
и
-10
-7

Потом
9
и
-7

потом 2 в первом, как остаток от неправильного округления.
 

$lider

Бывает
Подозреваю что нужно не только foreach но и функцию пользовать, с вызовом самой себя...
PHP:
function raspr($array){
   if(...)
   else ...
   raspr($array)
}
Вот только реализация хромает. :(

-~{}~ 22.10.10 17:07:

Всем спасибо.
Решил двумя вложенными foreach с обновлением полей nado.
 

mustafa

Новичок
>>Решил двумя вложенными foreach с обновлением полей nado.
Конкретней, приведите код, авось пригодиться
 

$lider

Бывает
Закидают шапками конечно...
но нужно было быстро.
PHP:
			foreach ($result as $key => $value)
			{
				if($value['nado']>0)
				{
					foreach ($result as $key1 => $value1)
					{
						if($value1['nado']<0)
						{
							if($value['nado']>($value1['nado']*-1))
							{
								echo "<br>".$value['sklad']." >> ".$value1['sklad']." - ".($value1['nado']*-1)." шт.";
								$result[$key1]['nado']=$result[$key1]['nado']+($value1['nado']*-1);
								$result[$key]['nado']=$result[$key]['nado']+$value1['nado'];
								$value['nado']=$result[$key]['nado'];
							}
							else
							{
								if($value['nado']>0)
								{
								echo "<br>".$value['sklad']." >> ".$value1['sklad']." - ".$value['nado']." шт.";
								$result[$key1]['nado']=$result[$key1]['nado']+$value['nado'];
								$result[$key]['nado']=$result[$key]['nado']-$value['nado'];
								$value['nado']=$result[$key]['nado'];
								};
							};
						};
					}
				}
			}
 
Сверху