Есть некий массив. Создал цикл, который подсчитывает значения в нем. Подсчитывает правильно. как сделать, чтобы он выдавал немного в другом формате, для всех ключей? Код (PHP): var counter = {}; var ar_q=new Array( ['2.08.15', '000',0,0,0,0,0,0,0,0,'', '2015-08-02'], ['2.08.15', 'Виталий',0,0,0,0,0,0,0,0,'', '2015-08-02'], ['2.08.15', 'Артур',0,0,0,0,0,0,0,0,'', '2015-08-02'], ['2.08.15', 'имя',2,3,4,4,4,5,5,1,'орррррррр', '2015-08-02'], ['2.08.15', 'Александр',1,2,3,4,5,6,7,1,'привет', '2015-08-02'], ['30.07.15', '000',0,0,0,0,0,0,0,0,'', '2015-07-30'], ['30.07.15', 'Виталий',0,0,0,0,0,0,0,0,'', '2015-07-30'], ['30.07.15', 'Артур',1,2,3,4,5,6,7,0.5,'kkkkkkkkk', '2015-07-30'], ['30.07.15', 'имя',0,0,0,0,0,0,0,0,'', '2015-07-30'], ['30.07.15', 'Александр',0,0,0,0,0,0,0,0,'', '2015-07-30'], ['29.07.15', '000',0,0,0,0,0,0,0,0,'', '2015-07-29'], ['29.07.15', 'Виталий',0,0,0,0,0,0,0,0,'', '2015-07-29'], ['29.07.15', 'Артур',0,0,0,0,0,0,0,0,'', '2015-07-29'], ['29.07.15', 'имя',3,9,0,4,0,2,0,0,'', '2015-07-29'], ['29.07.15', 'Александр',3,15,1,1,6,1,1,1,'1', '2015-07-29'] ); function itog(){ var counter = {}; for(var i in ar_q){ var current = ar_q[i]; var name = current[1]; var value = current[2]; if(counter[name] == undefined){ counter[name] = 0; } counter[name]+= value; } return counter; } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
это javascript) там не explode, там split)) походу так и придется писать ... current[2] + current[3] + ... + current[8] + current[9] ...
на код не обратил внимания) Добавлено спустя 2 минуты 40 секунд: тогда split и все вопросы вроде решаются. далее имеем на выходе что надо
так самое главное в коде, как не обращать внимания на него) и это результат выполнения по одному ключу, а их 9) какую-то часть этого кода надо зациклить, от 2 до 10) а где цикл вставить- не знаю( сейчас в цикле консоль выдает так: а надо как в первом примере. и никак её не сплиттить. даже если counter- не объект а массив...(
По идее, код уж не особо был важен, когда я увидел в каком виде у тебя данные, подумал ты имеешь их в виде строки. вот функция, на выходе имеем массив result[0] вернет 000:00000000 и так далее для всех. Или можешь изменить его так чтобы возвращал сразу форматированную строку. Код (PHP): function result(array) { for (i = 0; i < array.length; i++) { arr = array[i]; name = arr[1]; value = "" + arr[2] + arr[3] + arr[4] + arr[5] + arr[6] + arr[7] + arr[8] + arr[9]; result[i] = name + ":" + value; } return result; } Добавлено спустя 18 минут 42 секунды: да, оказалось split там не подходил.
Результат в песочнице Код (PHP): for(var i = 0; i < ar_q.length; i++) { var name = ar_q[i][1], nums = ar_q[i].slice(2, 10); if(!counter.hasOwnProperty(name)) { counter[name] = nums; } else { for(var j = 0; j < nums.length; j++) { counter[name][j] += nums[j]; } } }
Код (PHP): function result(array) { var res = {}; for (i = 0; i < array.length; i++) { arr = array[i]; name = arr[1]; value = "" + arr[2] + arr[3] + arr[4] + arr[5] + arr[6] + arr[7] + arr[8] + arr[9]; res[i] = name + ":" + value; } return res; } результат Код (Text): Object {0: "000:00000000", 1: "Виталий:00000000", 2: "Артур:00000000", 3: "имя:23444551", 4: "Александр:12345671", 5: "000:00000000", 6: "Виталий:00000000", 7: "Артур:12345670.5", 8: "имя:00000000", 9: "Александр:00000000", 10: "000:00000000", 11: "Виталий:00000000", 12: "Артур:00000000", 13: "имя:39040200", 14: "Александр:315116111"}
а как всё это попроще в html таблицу загнать?) имя, разумеется, тоже должно само ставиться. цикл новый нужен? Код (Text): <table><tr><td>Александр</td><td>'+counter['Александр'][0]+'</td><td>'+counter['Александр'][1]+'</td><td>'+counter['Александр'][2]+'</td><td>'+counter['Александр'][3]+'</td><td>'+counter['Александр'][4]+'</td></tr></table> ну или хотя бы как кол-во уникальных имен получить
А разве это не очевидно? )) По ходу пьесы, в JS не ждите каких-то "волшебных" функций, как в том же PHP... Код (PHP): var names = Object.keys(counter); // вернет вам массив этих имен
получилось! спс. Код (Text): var names = Object.keys(counter); var ret=''; for(a=0;a<names.length;a++){ unam=names[a]; ret+='<tr><td>'+unam+'</td>'; for(x=0;x<counter[unam].length;x++){ ret+='<td>'+counter[unam][x]+'</td>'; } ret+='</tr>'; }