[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сложение массива в цикле
kuzroman
У меня есть символьный массив (выборка из БД)
Как их все можно сложить в цикле?



Спустя 4 минуты, 41 секунда (15.11.2010 - 12:36) Basili4 написал(а):
см . implode explode

Спустя 24 минуты, 47 секунд (15.11.2010 - 13:00) sergeiss написал(а):
Цитата (kuzroman @ 15.11.2010 - 13:31)
У меня есть символьный массив (выборка из БД)
Как их все можно сложить в цикле?

Это строки или строковое представление чисел?
В первом случае будет длинная строка, объединяющая все строки, во втором будет именно сумма. Реализовать можно по-разному.

И вопрос встречный: если это все-таки числа, то почему бы не найти их сумму прямо в БД, в запросе?

Спустя 4 минуты, 3 секунды (15.11.2010 - 13:05) kuzroman написал(а):
Цитата (sergeiss @ 15.11.2010 - 10:00)
Цитата (kuzroman @ 15.11.2010 - 13:31)
У меня есть символьный массив (выборка из БД)
Как их все можно сложить в цикле?

Это строки или строковое представление чисел?
В первом случае будет длинная строка, объединяющая все строки, во втором будет именно сумма. Реализовать можно по-разному.

И вопрос встречный: если это все-таки числа, то почему бы не найти их сумму прямо в БД, в запросе?

Это строки.

Спустя 2 минуты, 46 секунд (15.11.2010 - 13:07) DedMorozzz написал(а):
получаешь массив и загоняешь в foreach. И далее каждый элемент конкатенируешь.
$a = arr;
$res = '';
foreach($a as $k){
$res .= $k;
}
echo $res;

Спустя 1 минута, 17 секунд (15.11.2010 - 13:09) sergeiss написал(а):
Где-то вот так:

имеешь массив $arr
$arr_sum='';
foreach( $arr as $arr_str )
$arr_sum .= $arr_str;

echo $arr_sum;


PS. "ДедМороз, борода из ваты..."... Опередил меня :) Но зато у меня обозначения понятнее и скобок лишних нету ;)

Спустя 16 минут, 47 секунд (15.11.2010 - 13:25) kuzroman написал(а):
Цитата (sergeiss @ 15.11.2010 - 10:09)
Где-то вот так:

имеешь массив $arr
$arr_sum='';
foreach( $arr as $arr_str )
  $arr_sum .= $arr_str;

echo $arr_sum;


PS. "ДедМороз, борода из ваты..."... Опередил меня :) Но зато у меня обозначения понятнее и скобок лишних нету  ;)

Разместил все это в таком цикле:

 while ($arr = mysql_fetch_assoc($result) 
{

$arr_sum='';
foreach( $arr as $arr_str )
$arr_sum .= $arr_str;

}
echo $arr_sum;


однко выдается только последний массив.
Кстати он у меня вот такой:

Цитата
20270AcerAspire 7552G-X926G64BikkPhenom II Quad-Core X920 2300 Mhz/17.3"/1600x900/6144Mb/640Gb/Blu-Ray/Wi-Fi/Bluetooth/Win 7 HB43800.001375.0042372.001401608714927_m.jpg14927_b1.jpgLX.PZV02.032Acer Aspire 7552G-X926G64Bikk LX.PZV02.032 17" LED HD, AMD Phenom xII Quad-Core X920 (2.3GHz, L2 cache 2M), 6GB, 500GB, 1024MB ATI Radeon HD 5850, Blu-ray, Gigabit LAN, WebCam, 802.11b/g+BT, 6cell, W7 HB 64bit, 2.55kg, blackПроцессор:AMD Phenom xII Quad-Core X920 (2.3GHz, L2 cache 2M)Оперативная память:6 gbЖесткий диск:500Gb (5400rpm) SATAЭкран, камера:17,6" WXGA с технологией светодиодной подсветки (Acer CineCrystal), 0,3 Mp.Разрешение экрана:1600x900Видеокарта:1024MB ATI Radeon HD 5850Оптический привод:Dual DVD-RW Super MultiЗвуковая карта:Intel® High Definition AudioСвязь:Сеть 10/100/1000 Мбит/с (RJ45)Беспроводная связь:WiFiИнтерфейсы:2хUSB 2.0, VGA, Head-Out, Microphone-In, Kensington LockСлоты расширения:Card Reader 5-в-1Батарея:Li-Ion 6 cell (4800 мАч)Размеры:410x286x42 ммВес:2.55 кгОперационная система:Win 7 Home Premium 64 bitГарантия:Гарантия 1 год СЦСсылка на сайт производителя:www.acer.ru 0117003;16930;15650;15733;15249;16526;16121;16808;17572;17688;17709;17636;17237;17634;17457;16826;;;Ноутбук011LX.PZV02.032250307215.6Windows 72


А хотелось бы чтобы все поля из mysql сохранились и вывелась сумма массивов.
В общем то что то вроде
$result = array_merge_recursive ($arr1, $arr2,$arr3);
подходит только как
$arr1, $arr2,$arr3 сделать в цикле?


Спустя 4 минуты, 55 секунд (15.11.2010 - 13:30) twin написал(а):
$arr_sum='';
за цикл надо.

А вообще, почему Basili4'а не послушали?

Спустя 25 минут, 41 секунда (15.11.2010 - 13:56) sergeiss написал(а):
А зачем цикл в цикле??????????????????
Вот так, наверное

$arr_sum='';
while ($arr = mysql_fetch_assoc($result)
{

...
$arr_sum .= $arr['правильный индекс выборки'];

}
echo $arr_sum;

Спустя 12 минут, 58 секунд (15.11.2010 - 14:09) linker написал(а):
Действительно, почему не совет Basili4?
$arr_sum = '';
while ($arr = mysql_fetch_assoc($result))
{
$arr_sum .= implode('', $arr);
}
echo $arr_sum;

Спустя 1 минута, 16 секунд (15.11.2010 - 14:10) twin написал(а):
    $arr_sum='';
все равно за цикл надо.

Спустя 5 минут, 19 секунд (15.11.2010 - 14:16) linker написал(а):
twin
Ну да, fixed.

Спустя 5 минут, 49 секунд (15.11.2010 - 14:21) Self написал(а):
SELECT CONCAT(.......);

Спустя 6 минут, 22 секунды (15.11.2010 - 14:28) kuzroman написал(а):
Цитата (sergeiss @ 15.11.2010 - 10:56)
А зачем цикл в цикле??????????????????
Вот так, наверное

$arr_sum='';
while ($arr = mysql_fetch_assoc($result)
{

...
$arr_sum .= $arr['правильный индекс выборки'];

}
echo $arr_sum;

Да спасибо, после

$arr_sum = '';
while ($arr = mysql_fetch_assoc($result))
{
$arr_sum .= implode('', $arr);
}
echo $arr_sum;


у меня выводится, вот так:

Цитата

1-77302-HP-HP CQ62-a10ER-AMD V-Series V120(2200Mhz)/15.6"(1366x768)/2Gb/250Gb/ATI Mobility Radeon HD4250(256Мb)/Windows 7 Home Basic 64-bit в Список покупок--17800.00-565.00-17411.00-1-1-0-1289-19128_m.jpg-19128_b.jpg---WQ272EA-AMD Turion II Dual-Core P520, 2300 МГц, 2048 Мб, 320 Гб, Radeon HD4200, DVD-RW, Wi-Fi, Bluetooth, Cam, Linux, 15.6" (1366x768), 2.5 кг.-Процессор:-AMD Turion II Dual-Core P520 2300 МГц-Оперативная память:-2048Mb, DDR3 1066MHz (Максимум 4Gb)-Жесткий диск:-320Gb (7200rpm) SATA-Экран, камера:-15,6" WXGA LED, 2,0 Mp.-Разрешение экрана:-1366 x 768-Видеокарта:-Radeon HD4200-Оптический привод:-DVD-Super Multi Double Layer-Звуковая карта:-Intel® High Definition Audio-Связь:-Сеть 10/100/1000 Мбит/с (RJ45), Модем v.92 56K (RJ11)-Беспроводная связь:-Wi-Fi, Bluetooth 2.1 + EDR-Интерфейсы:-SB 2.0, VGA, HDMI, Head-Out, Mic-in-Слоты расширения:-Express Card 34, слот Secure Digital, MultiMedia Card-Батарея:-Li-Ion 6 cell-Размеры:-254 x 371 x 32 мм-Вес:-2.5 кг-Операционная система:-Linux-Гарантия:-Гарантия 1 год СЦ-Ссылка на сайт производителя:- - - - - -0-1-;;;;;;;;;-17708;15549;17902;17940;17457;16826;17923;;;-Ноутбук-0-1-1-WQ272EA---320-2048-15.6----2

2-20466-HP-ProBook 4515s (VC414EA)-Turion II M520 2300 Mhz/15.6"/1366x768/3072Mb/320.0Gb/DVD-RW/Wi-Fi/Bluetooth/Linux--17960.00-575.00-17719.00-1-2-0-1289-18413_m.jpg-18413_b.jpg---VC414EA-AMD Turion II 2300МГц M520/3072Мб/320Гб/ATI Mobility Radeon HD 3200 256Мб +1280Мб/15.6" WXGA+ LED 1366x768/DVD±RW LightScribe/802.11 a/b/g/2.6кг/Linux-Процессор:-AMD Turion II 2300МГц M520-Оперативная память:-3072Mb, DDR3 1333MHz (Максимум 4Gb)-Жесткий диск:-320Gb (7200rpm) SATA-Экран, камера:-15,6" WXGA HD LED, 2,0 Mp.-Разрешение экрана:-1366 х 768-Видеокарта:-ATI Mobility Radeon HD 3200 256Мб-Оптический привод:-DVD-Super Multi Double Layer-Звуковая карта:-Intel® High Definition Audio-Связь:-Сеть 10/100/1000 Мбит/с (RJ45)-Беспроводная связь:-WiFi-Интерфейсы:-3xUSB 2.0, VGA, LAN, HDMI, Head-Out, Microphone-In, Kensington Lock-Слоты расширения:-Express Card 34, Card Reader-Батарея:-Li-Ion 6 cell-Размеры:-371 x 249 x 27 мм-Вес:-2,4 кг-Операционная система:-Linux-Гарантия:-Гарантия 1 год СЦ-Ссылка на сайт производителя:- - - - - -0-0-12807;17998;15661;18467;15733;15249;16120;14010;15864;17511-;;;;;;;;;-Ноутбук-0-2-1-VC414EA---320-3072-15.6--Windows Vista--2


А хотелось бы чтобы были ключи вроде [id] = 77302, [name] HP ...

Или можно их как самому задать?

Спустя 26 минут, 1 секунда (15.11.2010 - 14:54) kuzroman написал(а):
И все таки здесь наверное получается длинная переменная $arr_sum, а не массив.
Парни намекните как быть если БД делали дибилы и мне приходится делать цикл в цикле чтобы сделать выборку из мускула.

Вот такой дибильный код получается:


if (!empty($_GET['id_tovar'])) $tovar = $_GET['id_tovar'];


$zapros_0 = "SELECT id_unit, name FROM unit_tb ";
$zapros_0. " WHERE pkod = '$tovar' ORDER BY id_unit ";
$result_zapros_0 = mysql_query ($zapros_0,$lnk);
$arr_0 = mysql_fetch_assoc($result_zapros_0) ; // узнаем id и имя

$name_top = $arr_0['name'] ; // ИМЯ МЕНЮ

while ($arr_0 = mysql_fetch_assoc($result_zapros_0))
{

$id_unit_firma = $arr_0['id_unit'] ;
$name_firma = $arr_0['name'] ;

$zapros_1 = " SELECT * FROM unit_tb WHERE pkod = '$id_unit_firma' AND nal >0 AND kol >0 AND price > 10 ORDER BY price";
$result_zapros_1 = mysql_query ($zapros_1,$lnk);
$arr_1 = mysql_fetch_assoc($result_zapros_1) ;

if ($arr_1 == '')
{

$proverka = "SELECT * FROM unit_tb WHERE pkod = '$id_unit_firma' AND name = '$name_top' ";
$result_proverka = mysql_query ($proverka,$lnk);
$arr_22 = mysql_fetch_assoc($result_proverka) ;

$id_unit_firmatop = $arr_22['id_unit'] ; // ИМЯ МЕНЮ

$zapros_2 = "SELECT * FROM unit_tb WHERE pkod = '$id_unit_firmatop' AND nal >0 AND kol >0 AND price > 10 ORDER BY price ";
$result_zapros_2 = mysql_query ($zapros_2,$lnk);
$arr_2 = mysql_fetch_assoc($result_zapros_2) ;

if ($arr_2 == '') {} else { while ($arr_2 = mysql_fetch_assoc($result_zapros_2)) { выводим все блоки } }
}

else { while ($arr_1 = mysql_fetch_assoc($result_zapros_1)) { выводим все блоки } }


выводит все хорошо и правильно но блоками по id_unit и в них уже сортирует по цене, а хотелось бы чтобы сортировалось не блоками а одним запросом, ну или как то так.

Спустя 5 минут, 6 секунд (15.11.2010 - 14:59) linker написал(а):
Так что тебе в итоге надо массив содержащий все элементы в виде ассоциативных массивов, или массив строк или одну большую строку?

Спустя 26 минут, 8 секунд (15.11.2010 - 15:25) sergeiss написал(а):
У тебя тут есть несколько ошибок:

1. Вот это неверно,
  if (!empty($_GET['id_tovar'])) $tovar = $_GET['id_tovar']; 

потому что может получиться так, что переменная $tovar не определена.

2. Вот такого типа проверки заведомо неверные,
if ($arr_1 == '') 

т.к. в этой переменной может быть либо false (если выборка была неудачная), либо указатель на массив, содержащий данные.


_____________
kuzroman@list.ru
Быстрый ответ:

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