while($row = mysql_fetch_assoc($query))
$summ_array[$row['status_name']][] = $row['days'];
//получаем
[отпуск] => Array
(
[0] => 14
[1] => 3
)
//пробывал так:
$summ_array[$row['status_name']] += $row['days'];
Куча нойтсов:
Undefined variable: summ_array
Undefined index: отпуск
Как надо чтоб все было чик-поп?))
Спустя 13 минут, 33 секунды (21.06.2011 - 16:18) T1grOK написал(а):
А в запросе посчитать не проще?!
Спустя 4 минуты, 37 секунд (21.06.2011 - 16:23) linker написал(а):
$summ_array = array();
while($row = mysql_fetch_assoc($query))
$summ_array[$row['status_name']] += $row['days'];
Спустя 1 минута, 45 секунд (21.06.2011 - 16:25) alex12060 написал(а):
$summ_array = array();
while($row = mysql_fetch_assoc($query))
$summ_array[$row['status_name']][] = $row['days'];
Спустя 30 секунд (21.06.2011 - 16:25) Renden написал(а):
T1grOK
Нееет :)
Нунафиг яманал :)
linker
Notice: Undefined index: отпуск in /usr/local/apache2/htdocs/dev/modules/holiday/index.php on line 101
Notice: Undefined index: командировка in /usr/local/apache2/htdocs/dev/modules/holiday/index.php on line 101
Ошибка с массивом пропала:)
Нееет :)
(SELECT SUM(DATEDIFF(date_end,date_begin)) FROM holiday WHERE user_id='$usr_id' and allow='1' and YEAR(date_begin)='$years' and hol_status='2') as hol_comand,
(SELECT SUM(DATEDIFF(date_end,date_begin)) FROM holiday WHERE user_id='$usr_id' and allow='1' and YEAR(date_begin)='$years' and hol_status='1') as hol_holly,
(SELECT SUM(DATEDIFF(date_end,date_begin)) FROM holiday WHERE user_id='$usr_id' and allow='1' and YEAR(date_begin)='$years' and hol_status='3') as hol_holly_n,
(SELECT SUM(DATEDIFF(date_end,date_begin)) FROM holiday WHERE user_id='$usr_id' and allow='1' and YEAR(date_begin)='$years' and hol_status='4') as hol_bol,
(SELECT SUM(DATEDIFF(date_end,date_begin)) FROM holiday WHERE user_id='$usr_id' and allow='1' and YEAR(date_begin)='$years' and hol_status='5') as hol_bol_n"
Нунафиг яманал :)
linker
Notice: Undefined index: отпуск in /usr/local/apache2/htdocs/dev/modules/holiday/index.php on line 101
Notice: Undefined index: командировка in /usr/local/apache2/htdocs/dev/modules/holiday/index.php on line 101
Ошибка с массивом пропала:)
Спустя 7 минут, 10 секунд (21.06.2011 - 16:32) Renden написал(а):
Я непойму почему он делает замечание, вроде же все Ок
Спустя 43 секунды (21.06.2011 - 16:33) linker написал(а):
$summ_array = array();
while($row = mysql_fetch_assoc($query))
{
$name = $row['status_name'];
$summ_array[$name] = isset($summ_array[$name]) ? $summ_array[$name] + $row['days'] : $row['days'];
}
Спустя 1 минута, 52 секунды (21.06.2011 - 16:35) linker написал(а):
Или так
$summ_array = array();
while($row = mysql_fetch_assoc($query))
{
if (isset($summ_array[$row['status_name']]))
$summ_array[$row['status_name']] += $row['days'];
else
$summ_array[$row['status_name']] = $row['days'];
}
Спустя 54 секунды (21.06.2011 - 16:36) T1grOK написал(а):
$status = array('статус1'=NULL, 'статус2'=>NULL)
while($row = mysql_fetch_assoc($query))
$summ_array[$row['status_name']][] = $row['days'];
foreach($status as $key=>$value){
$status[$key] = array_sum($summ_array[$key]);
}
Спустя 4 минуты, 23 секунды (21.06.2011 - 16:40) Renden написал(а):
linker
Спасибо, но я непонял почему была ошибка? Разьве он не должен был прибавлять и присваивать одновременно, странно..
T1grOK
Лишний перебор массива - неэлегантно, но спс за поддержку
Спасибо, но я непонял почему была ошибка? Разьве он не должен был прибавлять и присваивать одновременно, странно..
T1grOK
Лишний перебор массива - неэлегантно, но спс за поддержку
Спустя 1 день, 23 часа, 14 минут, 50 секунд (23.06.2011 - 15:55) Renden написал(а):
Дабы не создавать новую тему попрос тотже но немного другой:
Цитата |
[value1 ] => Array ( [0] => Array ( [0] => 16. [1] => 0. [2] => 4. [3] => -4. ) [1] => Array ( [0] => 16. [1] => 0. [2] => 6. [3] => -4. ) ) |
Как можно его сложить чтоб получилось так?
Цитата |
[value1 ] => Array ( [0] => 32. [1] => 0. [2] => 10. [3] => -8. ) |
т.е не все значения а ключ к ключу, значение к зачению.
Спустя 37 минут, 59 секунд (23.06.2011 - 16:33) gidrosoldat написал(а):
Может так?
$mega_array = array();
foreach($arr as $val)
{
$mega_array = array_merge(array($val[1],$val[2],$val[3],$val[4]), $mega_array);
}
Спустя 5 минут, 38 секунд (23.06.2011 - 16:39) nugle написал(а):
Может так?
foreach($arr['value1'][0] as $key)
$arr['value1'][$key] = $arr['value1'][0][$key] + $arr['value1'][1][$key];
Спустя 52 минуты, 58 секунд (23.06.2011 - 17:32) gidrosoldat написал(а):
nugle, твой вариант сработает максимум с 4 массивами. Зачем вообще привязывать количество переменных в конечном массиве к числу общих массивов (общая переменная $key)? Или я не так понял?
Спустя 1 час, 6 минут, 30 секунд (23.06.2011 - 18:38) nugle написал(а):
gidrosoldat
я просто глянул на структуру и поэтому так написал
я просто глянул на структуру и поэтому так написал
Спустя 5 минут, 18 секунд (23.06.2011 - 18:44) Renden написал(а):
gidrosoldat
Невижу смысла сливать пустой массив и массив со значениями, в итоге получится просто массив со значениями.
nugle
Идею понял, но запустить что-то немогу - неработает
Невижу смысла сливать пустой массив и массив со значениями, в итоге получится просто массив со значениями.
nugle
Идею понял, но запустить что-то немогу - неработает
Спустя 28 минут, 19 секунд (23.06.2011 - 19:12) nugle написал(а):
вот смотри как можно, при условии, что ключи в массивах одинаковые
<?php
$arr = array(
'value1' => array(
0 => array(
0 => 16,
1 => 0,
2 => 4,
3 => -4
),
1 => array(
0 => 16,
1 => 0,
2 => 6,
3 => -4
)
));
$keys = array_keys($arr['value1'][0]);
foreach($keys as $key)
{
$next['value1'][$key] = $arr['value1'][0][$key] + $arr['value1'][1][$key];
}
var_dump($next);
?>
Спустя 2 часа, 46 минут, 28 секунд (23.06.2011 - 21:58) Renden написал(а):
nugle
Ну так то как ты написал оно работает, но у меня ключи естественно разные, массив огромный там 'value1' 'что-то' 'еще_value3' и тп, и у каждого вложенность из массивов(разная) (что общее то что вложено 4 пары ключ => значение)
У тебя тут ключ жестко прописан, как мне взять любое значение ключа?
Т.е пример массива:
Ну так то как ты написал оно работает, но у меня ключи естественно разные, массив огромный там 'value1' 'что-то' 'еще_value3' и тп, и у каждого вложенность из массивов(разная) (что общее то что вложено 4 пары ключ => значение)
У тебя тут ключ жестко прописан, как мне взять любое значение ключа?
Т.е пример массива:
Цитата |
[Рубашка мужская длинный рукав] => Array ( [0] => Array ( [0] => 14. [1] => 0. [2] => 1. [3] => -1. ) [1] => Array ( [0] => 14. [1] => 0. [2] => 1. [3] => -1. ) ) [Рубашка мужская короткий рукав] => Array ( [0] => Array ( [0] => 10. [1] => 0. [2] => 1. [3] => -1. ) [1] => Array ( [0] => 30. [1] => 0. [2] => 2. [3] => -4. ) [2] => Array ( [0] => 14. [1] => 0. [2] => 0. [3] => -1. ) [3] => Array ( [0] => 27. [1] => 0. [2] => 1. [3] => -3. ) [4] => Array ( [0] => 14. [1] => 0. [2] => 1. [3] => -2. ) ) [лента -oбруч для волос] => Array ( [0] => Array ( [0] => 9. [1] => 0. [2] => 0. [3] => -2. ) ) |
Спустя 11 минут, 59 секунд (23.06.2011 - 22:10) gidrosoldat написал(а):
Цитата (Renden @ 23.06.2011 - 15:44) |
gidrosoldat Невижу смысла сливать пустой массив и массив со значениями, в итоге получится просто массив со значениями. |
Это на первом витке цикла пустой, а потом уже в переменной $mega_array остаточное значение после первого витка цикла. По идее он должен слить все значения для каждого определенного ключа во всех массивах.
Спустя 9 часов, 59 минут, 47 секунд (24.06.2011 - 08:10) nugle написал(а):
Додумать не сложно, только не пойму почему куча notice, пришлось убрать фиксирование ошибок
<?php
error_reporting(null);
$arr = array(
'value1' => array(
0 => array(
0 => 16,
1 => 0,
2 => 4,
3 => -4
),
1 => array(
0 => 16,
1 => 0,
2 => 6,
3 => -4
)),
'value2' => array(
0 => array(
0 => 16,
1 => 0,
2 => 4,
3 => -4
),
1 => array(
0 => 12,
1 => 0,
2 => 6,
3 => -4
))
);
$new = array();
$key_arr = array_keys($arr);
if(count($key_arr) > 0)
$keys = array_keys($arr[$key_arr[0]][0]);
for($i=0; $i<count($arr); $i++)
{
foreach($arr[$key_arr[$i]] as $key=>$val)
for($i2=0; $i2<count($keys); $i2++)
$new[$key_arr[$i]][$i2] = $val[$i2] + $new[$key_arr[$i]][$i2];
}
var_dump($new);
?>
Спустя 3 часа, 5 минут, 20 секунд (24.06.2011 - 11:15) Renden написал(а):
nugle
Я тоже не совсем понимаю откуда они берутся, но линкер в начале этой темы дал решение как их побороть :)
Я тоже не совсем понимаю откуда они берутся, но линкер в начале этой темы дал решение как их побороть :)
$new[$key_arr[$i]][$i2] = isset($new[$key_arr[$i]][$i2]) ? $val[$i2] + $new[$key_arr[$i]][$i2] : $val[$i2];
Спустя 1 час, 20 минут, 8 секунд (24.06.2011 - 12:36) nugle написал(а):
первый раз с этим столкнулся)