Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчёт грузопотока средствами PHP
 
 автор: RV   (03.10.2005 в 14:50)   письмо автору
 
 

задача изначально такая.
есть дни от 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 это и есть то число которое я скажу)

Изначально это все было в экселе, но я там не уверен что это можно посчитать без использования вб скриптов.
Проблема в том, что процесс реальный, т.е. количество дней растет с каждым днем, и груз соответсвенно тоже возится. Второй час сижу! помогите плз!

   
 
 автор: cheops   (03.10.2005 в 14:55)   письмо автору
 
   для: RV   (03.10.2005 в 14:50)
 

Информация хранится в файле или базе данных?

   
 
 автор: RV   (03.10.2005 в 15:13)   письмо автору
 
   для: cheops   (03.10.2005 в 14:55)
 

изначально они хранятся в *.xls. работу по получению данных из файла я попробую сделать сам (хотя рассмотрю варианты как их достать :) ), а пока предположим что данные хранятся в переменных в скрипте (т.е. даны).
и еще. предполагается что веб сервера не будет. т.е. будет php.exe + все что ему надо + сам скрипт.
вывод результата тоже не важен. главное алгоритм подсчета

   
 
 автор: cheops   (03.10.2005 в 15:39)   письмо автору
 
   для: 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

   
 
 автор: RV   (03.10.2005 в 16:34)   письмо автору
 
   для: 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
и т.д.
          )

   
 
 автор: cheops   (04.10.2005 в 01:12)   письмо автору
 
   для: 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);
?>

   
 
 автор: RV   (04.10.2005 в 05:24)   письмо автору
 
   для: 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);
}
?>

а вот дальше не знаю как

   
 
 автор: himic   (04.10.2005 в 07:22)   письмо автору
 
   для: RV   (04.10.2005 в 05:24)
 

Когда ты будешь загружать данные из экселя там уже будет готовый массив
или ты ещё не сделал загрузку из экселя?

   
 
 автор: RV   (04.10.2005 в 07:25)   письмо автору
 
   для: himic   (04.10.2005 в 07:22)
 

himic
не. не делал. просто в экселе копирую столбец, и вставляю в пхп файл.
есть ли смысл что то делать с загрузкой из файла если пхп работает как сги приложение (запускаю из батника (php 1.php)) ?

   
 
 автор: cheops   (04.10.2005 в 13:29)   письмо автору
 
   для: RV   (04.10.2005 в 07:25)
 

Хм... а почему от идеи CSV-файла отказались - там же можно всё оптом, сразу загрузить?

   
 
 автор: cheops   (04.10.2005 в 13:38)   письмо автору
 
   для: RV   (04.10.2005 в 05:24)
 

Хм.. Так с чем мы имеем дело с переменой или массивом?

   
 
 автор: RV   (04.10.2005 в 14:36)   письмо автору
 
   для: cheops   (04.10.2005 в 13:38)
 

мы имеем дело вот с такой переменной:

<?
$s 
"40,2 
11,35 
68,17 

58,93 
79,9 
24,85 
0"

?>

каждая строка резделена через \n (надо пологать)

насчет fgetcsv
а им можно прочитать определенный столбец а не весь файл? или только весь файл, а полученный массив обрабатывать?
а. что то я затупил. решение. приведенное cheops'oм работает как надо. сенкс :)

   
 
 автор: cheops   (05.10.2005 в 00:20)   письмо автору
 
   для: RV   (04.10.2005 в 14:36)
 

Так нужно потрошить строку или уже всё решено? :)))

   
 
 автор: himic   (05.10.2005 в 10:09)   письмо автору
 
   для: cheops   (05.10.2005 в 00:20)
 

RV тебе проблем больше надо, делай csv и всё

поможем!

Могу пример дать где из csv переносит напрямую в табл
могу дать где заносит в базу

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования