Здравствуйте. Это на мой взгляд очень сложная задача. Что бы минимально нагрузить процессом выполнения сервер, но выполнить условие. У меня все сводится к повторяемым циклам, до нужного результата, но не думаю, что это хорошее решение. Может есть какие то более простые способы. Как говорится, все гениальное просто, но до этого еще додуматься нужно.
В общем. Задача такая. Есть Число. Переменная $Maxkolvo. Она меняется по разному и может быть 100 и выше, ну к примеру возьмем $Maxkolvo=15.
Есть неограниченное количество других переменных. Чаще всего от двух до четырех.
$file_in = file($file);
$rbase=explode(",", $p_data[9]);
for ($ir = 0; $ir < count($rbase); $ir++){
$rs=explode(":", $rbase[$ir]);
$rs[0]=trim($rs[0]);
for ($id = 0; $id < count($file_in); $id++){
$in_data = explode("|", $file_in[$id]);
if($in_data[0]==$rs[0]){ // находим нужное (искомый ид)
//Тут функцией удаляем из $file_in ($in_data[6]-$rs[1];)
}}
}
Все бы ничего. Цикл пройдется сколько нужно раз, и удалит столько, сколько требуется. Отнимет.
Но этот цикл это единичное действие, а проверок таких должно быть на $Maxkolvo. В данном случае 15. До тех пор, пока одна из ячеек ($in_data[6]) не приобретет значение 0. Тогда на этом все заканчивается.
$rs[1] может быть разным числом. Где то он 1, где то 4. Если $rs[1]>$in_data[6] то означает, что на этом финал.
Эх, это даже трудно объяснить, не говоря о том, что бы выразить в виде кода.
К примеру так. Есть Корзина в которой различные овощи и фрукты. Их можно взять от туда, смешать и получить салат. На салат требуется определенное количество разных овощей. К примеру Огурец:1, помидор: 2, лук: 1, укроп:4.
В корзине имеется Огурец: 15, помидор 30, лук: 40, укроп: 8.
За раз я могу сделать не более 15 салатов: $Maxkolvo
Для этого идет цикл с проверкой нужных овощей в корзине. $in_data[0]- Название овоща в корзине. $rs[0] - Название требуемого овоща.
В цикле находим нужный овощ, который есть в корзине.
if($in_data[0]==$rs[0]){
Количество овоща в корзине это $in_data[6], количество требуемого на салат это $rs[1].
Отнимем в корзине нужное кол-во.
$in_data[6]-$rs[1];
Я должен израсходовать ровно столько сколько требуется, если овощей меньше чем нужно, то столько, сколько смогу. Лишнее остается. Видно что укропа требуется 4. А есть 8. То есть в итоге я смогу сделать 2 салата лишь.
Если бы всего было в избытке в корзине, то максимально мог бы сделать 15 ($Maxkolvo). Очень надеюсь что понятно объяснил эту нелегкую задачу. Я сегодня уже весь день голову ломаю.