[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Произведение переменных
freed-master
Необходимо найти произведение двух переменных: цены товара и его количества (т.е. сделать "товаров на сумму"). Попробовал такой вариант:
Код
$sum_q = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
$sum_p = is_array($_SESSION['price']) ? $_SESSION['price'] : array();
$sum = $sum_q * $sum_p;
Но выдает ошибку:(



Спустя 11 минут, 52 секунды (5.03.2009 - 23:35) Viking написал(а):
дык вы пытаетесь вместо переменных массивы перемножать?
это неправильно. вы это прекратите!!!

Спустя 10 минут, 20 секунд (5.03.2009 - 23:46) freed-master написал(а):
О чудо, я прозрел!
Да действительно, чего это я? Видимо безсонные ночи дают о себе знать:)

Вот так все прекрасно:
Код
$sum_q = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
$sum_p = is_array($_SESSION['price']) ? $_SESSION['price'] : array();

$sum = array_sum($sum_q) * array_sum($sum_p);

Спустя 1 день, 16 часов, 55 минут, 49 секунд (7.03.2009 - 16:42) freed-master написал(а):
Прекрасно, да не все. Код скрипта:
Код
<?php
session_start();
if (isset($_POST['qty'])) {
   $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
   $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
$_SESSION['unit'][$_POST['code']] = $_POST['unit'];
$_SESSION['price'][$_POST['code']] = $_POST['price'];
}
$sum_q = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
$sum_p = is_array($_SESSION['price']) ? $_SESSION['price'] : array();

$sum = array_sum($sum_q) * array_sum($sum_p);
?>

Если товар один - хорошо цена умножается на колличество.
А вот если товаров несколько видов, то перемножаются сумма количества на сумму цен.
А как сделать так что б сначала перемножались сумма количества и цена одного товара, потом сумма количества и цена одного товара (и т.п.) а у жпотмо все эти результаты складывались?
Эсли написал сильно не понятно, вот то что делается сейчас:
Код
(Товар1 + Товар2 +..) * (Цена товара1 + Цена товара2 +..)

А вот то что хотелось бы:
Код
(Цена товара1 * Количество товара1) * количество видов товаро

Или вот то же самое:
Код
(Цена товара1 * Количество товара1) + (Цена товара2 * Количество товара2) + (Цена товара3 * Количество товара3) + ..

Спустя 7 минут, 52 секунды (7.03.2009 - 16:50) bret написал(а):
Цитата
А вот то что хотелось бы:
Код
(Цена товара1 * Количество товара1) * количество видов товаро

Или вот то же самое:
Код
(Цена товара1 * Количество товара1) + (Цена товара2 * Количество товара2) + (Цена товара3 * Количество товара3) + ..

Это не то же самое

Очевидно, что нужно сделать цикл, где для каждого товара надо находить произведение цены на количество, а затем складывать все эти значения

Спустя 27 минут, 53 секунды (7.03.2009 - 17:17) freed-master написал(а):
Именно это я и пытался сделать:
Код
<?php
session_start();
if (isset($_POST['qty'])) {
   $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
   $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
$_SESSION['unit'][$_POST['code']] = $_POST['unit'];
$_SESSION['price'][$_POST['code']] = $_POST['price'];
}
$sum_q = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
$sum_p = is_array($_SESSION['price']) ? $_SESSION['price'] : array();

$sum_tp = array_sum($sum_p);
foreach ($_SESSION['price'] as $code => $price){echo "$sum_tp";}

$sum = array_sum($sum_q) * $sum_tp;
?>

Но где ошибка?

Спустя 1 час, 11 минут, 59 секунд (7.03.2009 - 18:29) bret написал(а):
$sum_q есть массив количеств товаров
$sum_p есть массив цен товаров
допустим, мы покупаем 1шт. товара с кодом "01" по три рубля и два штуки товара с кодом "02" по четыре
тогда имеем
$sum_q["01"] = 1;
$sum_q["02"] = 2;
$sum_p["01"] = 3;
$sum_p["02"] = 4;
Хоть убей не пойму, что такое

Цитата
$sum_tp = array_sum($sum_p);

Какой физический у суммы цен всех выбранных товаров7

Не пойму, откуда затык на такой простой арифметической операции

Спустя 1 час, 4 минуты, 48 секунд (7.03.2009 - 19:34) freed-master написал(а):
Мне в браузере выдает:
Код
Invalid argument supplied for foreach()...

Что такое аргумент, т.е. где именно он есть?

Спустя 1 час, 39 минут, 3 секунды (7.03.2009 - 21:13) bret написал(а):
Аргумент - это содержимое foreach(), то, что ты ему подсовываешь
Проверь, что в $_SESSION['price']

Спустя 1 час, 52 секунды (7.03.2009 - 22:14) freed-master написал(а):
Не понял что я сделал - ошибка исчезла, но вопрос остается открытым: что прописать в фигурных скобках цикла для того чтобы подсчитывалось произведение количества и цены каждого товара, после чего эти произведения суммировались? Т.е. нужно как то происваивать переменной результат выполнения цикла, но кажется это не возможно. Может результаты выполнения цикла записывать в массив, но как?

Спустя 6 минут, 27 секунд (7.03.2009 - 22:21) freed-master написал(а):
Нет, ошибка не исчезла, х.з. что это такое sad.gif((

Спустя 6 минут, 23 секунды (7.03.2009 - 22:27) Viking написал(а):
создаешь переменную суммы, равную нулю
делаешь цикл от нуля, до длины этих массивов
в цикле прибавляешь к переменной суммы произведение соответствующих элементов массивов

Спустя 15 минут, 11 секунд (7.03.2009 - 22:42) freed-master написал(а):
Что значит дляинна массивов и где её взять?
Должно получиться что-то типа?:
Код
<?php
session_start();
if (isset($_POST['qty'])) {
   $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
   $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
   $_SESSION['unit'][$_POST['code']] = $_POST['unit'];
   $_SESSION['price'][$_POST['code']] = $_POST['price'];
}
$sum_q = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
$sum_p = is_array($_SESSION['price']) ? $_SESSION['price'] : array();
$sum_tp = $sum_q * $sum_p;
$sum = 0;
foreach ($_SESSION['price'] as $code => $price){echo "$sum + $sum_tp";}
?>

Спустя 6 минут, 41 секунда (7.03.2009 - 22:49) bret написал(а):
Пытаешься угадать, а надо почитать ман и подумать

Спустя 2 минуты, 45 секунд (7.03.2009 - 22:52) Viking написал(а):
ладно, здаюсь
PHP
$sum 0;
foreach(
$sum_q as $k => $val$sum+=$val*$sum_p[$k];


только я не вижу, откуда у тебя в этом коде может взяться более одного значения в $sum_q и $sum_p
вот у тебя берется одно значение количества
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];

а вот тут одно значение цены
$_SESSION['price'][$_POST['code']] = $_POST['price'];

вторых нигде нет

Спустя 15 минут, 7 секунд (7.03.2009 - 23:07) freed-master написал(а):
Ура!!! Все работает. Огромное спаисо!!! А данные заносятся в сессию из форм на других стрницах.


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.