|
|
|
| задача изначально такая.
есть дни от 1 и до... предположим 10 (а вообще их много, т.е. постоянно).
каждый день на склад завозят груз (масса). получаем такую табличку
день| груз |
1 | 40 |
2 | 60 |
3 | 20 |
4 | 15 |
5 | 10 |
6 | 22 |
7 | 70 |
8 | 30 |
9 | 35 |
10 | 67 |
надо посчитать определенное число в определенный день. (т.е. мне говорят день - я говорю получившеесе число).
число считается по такой зависимости:
для первого дня:
1 * массу груза в первый день = 1 * 40
для второго дня:
2 * массу груза в первый день + 1 * массу груза во второй день = 2 * 40 + 1 * 60
для третьего дня:
3 * массу груза в первый день + 2 * массу груза во второй день + 1 * массу груза в третьий день = 3 * 40 + 2 * 60 + 1 * 20
для шестого дня:
6 * 40 + 5 * 60 + 4 * 20 + 3 * 15 + 2 * 10 + 1 * 22 = x (x это и есть то число которое я скажу)
Изначально это все было в экселе, но я там не уверен что это можно посчитать без использования вб скриптов.
Проблема в том, что процесс реальный, т.е. количество дней растет с каждым днем, и груз соответсвенно тоже возится. Второй час сижу! помогите плз! | |
|
|
|
|
|
|
|
для: RV
(03.10.2005 в 14:50)
| | Информация хранится в файле или базе данных? | |
|
|
|
|
|
|
|
для: cheops
(03.10.2005 в 14:55)
| | изначально они хранятся в *.xls. работу по получению данных из файла я попробую сделать сам (хотя рассмотрю варианты как их достать :) ), а пока предположим что данные хранятся в переменных в скрипте (т.е. даны).
и еще. предполагается что веб сервера не будет. т.е. будет php.exe + все что ему надо + сам скрипт.
вывод результата тоже не важен. главное алгоритм подсчета | |
|
|
|
|
|
|
|
для: RV
(03.10.2005 в 15:13)
| | Подсчтить грузопоток можно по следующему алгоритму
<?php
// Пусть масса груза хранится в массиве
$mass = array(40,60,20,15,10,22,70,30,35,67);
// В переменной $day задаётся день до которого считать
$day = 5;
$summ = 0;
for($i = $day; $i > 0; $i--)
{
$summ += $mass[$day - $i]*$i;
}
// Грузопоток
echo $summ;
?>
|
PS Вот несколько тем, о том, как перетаскивать данные из XLS
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=5655
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4843
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3453 | |
|
|
|
|
|
|
|
для: cheops
(03.10.2005 в 15:39)
| | спасибо работает!
вот я дошел до такого массива:
Array
(
[0] => Array
(
[0] => 40
[1] => 2
)
[1] => Array
(
[0] => 11
[1] => 35
)
[2] => Array
(
[0] => 68
[1] => 17
)
[3] => Array
(
[0] => 0
)
[4] => Array
(
[0] => 58
[1] => 93
)
[5] => Array
(
[0] => 79
[1] => 9
)
[6] => Array
(
[0] => 24
[1] => 85
)
[7] => Array
(
[0] => 0
)
[8] => Array
(
[0] => 15
[1] => 935
)
[9] => Array
(
[0] => 16
[1] => 49
)
[10] => Array
(
[0] => 0
)
[11] => Array
(
[0] => 53
[1] => 12
)
[12] => Array
(
[0] => 86
[1] => 18
)
[13] => Array
(
[0] => 29
[1] => 82
)
[14] => Array
(
[0] => 28
[1] => 57
)
)
|
т.е. убрал запятые. как теперь его превратить в
Array
(
[0] => 40.2
[1] => 11.35
[2] => 68.17
[3] => 0
[4] => 58.93
и т.д.
)
|
| |
|
|
|
|
|
|
|
для: RV
(03.10.2005 в 16:34)
| | Можно поступить примерно следующим образом
<?php
$arr = Array
(
Array(40,2),
Array(11,35),
Array(68,17),
Array(0),
Array(58,93),
Array(79,9),
);
// В цикле обходим массив $arr и формируем
// промежуточный массив $temp
foreach($arr as $cif)
{
if(isset($cif[1])) $temp[] = $cif[0].".".$cif[1];
else $temp[] = $cif[0];
}
// Выводим содержимое массива
print_r($temp);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(04.10.2005 в 01:12)
| | нет нет нет!
изначально переменная была такая:
$s = "40,2
11,35
68,17
0
58,93
79,9
24,85
0";
|
именно так и никак иначе. (предполагается что эти данные были скопипастаны прямо из столбца экселя). и это все надо превратить в
$mass = array(40.2, 11.35, 68.17, 0, 58.93, 79.9, 24.85)
|
т.е. запятые превратить в точки, и сделать массив простенький, с которым будет работать верхний скрипт.
вот я сначала разделил строку на "/n" а потом разделил на "," и все поместил в массив:
<?
$m = explode("\n" , $s);
foreach($m as $val)
{
$index[] = explode("," , $val);
}
?>
|
а вот дальше не знаю как | |
|
|
|
|
|
|
|
для: RV
(04.10.2005 в 05:24)
| | Когда ты будешь загружать данные из экселя там уже будет готовый массив
или ты ещё не сделал загрузку из экселя? | |
|
|
|
|
|
|
|
для: himic
(04.10.2005 в 07:22)
| | himic
не. не делал. просто в экселе копирую столбец, и вставляю в пхп файл.
есть ли смысл что то делать с загрузкой из файла если пхп работает как сги приложение (запускаю из батника (php 1.php)) ? | |
|
|
|
|
|
|
|
для: RV
(04.10.2005 в 07:25)
| | Хм... а почему от идеи CSV-файла отказались - там же можно всё оптом, сразу загрузить? | |
|
|
|
|
|
|
|
для: RV
(04.10.2005 в 05:24)
| | Хм.. Так с чем мы имеем дело с переменой или массивом? | |
|
|
|
|
|
|
|
для: cheops
(04.10.2005 в 13:38)
| | мы имеем дело вот с такой переменной:
<?
$s = "40,2
11,35
68,17
0
58,93
79,9
24,85
0";
?>
|
каждая строка резделена через \n (надо пологать)
насчет fgetcsv
а им можно прочитать определенный столбец а не весь файл? или только весь файл, а полученный массив обрабатывать?
а. что то я затупил. решение. приведенное cheops'oм работает как надо. сенкс :) | |
|
|
|
|
|
|
|
для: RV
(04.10.2005 в 14:36)
| | Так нужно потрошить строку или уже всё решено? :))) | |
|
|
|
|
|
|
|
для: cheops
(05.10.2005 в 00:20)
| | RV тебе проблем больше надо, делай csv и всё
поможем!
Могу пример дать где из csv переносит напрямую в табл
могу дать где заносит в базу | |
|
|
|