Php двумерный массив в таблице

html — двумерный массив php с суммами в таблице

вывод должен быть таким, где «SUM» не является частью массива.

  | 1st key2 | 2nd key2 | 3rd key2 | SUM 1st key1 | 10 | 10 | 10 | 30 2nd key1 | 10 | 10 | 10 | 30 3rd key1 | 10 | 10 | 10 | 30 SUM | 30 | 30 | 30 | 90 

поэтому я начинаю вывод, чтобы увидеть, как далеко я доберусь:

echo ''; foreach($arr as $linekey => $line) < echo ''; echo ''; foreach($line as $key => $value) < echo ''; > echo ''; echo ''; break; > echo ''; foreach($arr as $key1 => $value1) < echo ''; echo''; $sumRow = 0; //reset sumRow foreach($arr[$key1] as $key2 => $value2) < echo''; $sumRow += $arr[$key1][$key2]; //summing up rows $sumAll += $arr[$key1][$key2]; //summing up everything $sumCol += $arr[$key1][$key2]; //where should be this? > echo''; //echo $sumRow echo ''; > echo '
'; echo ''; echo $key; echo ''; echo 'SUM'; //adding the SUM column echo '
'.$key1.''.round($arr[$key1][$key2],0).''.round($sumRow,0).'
';

это работает, но я не уверен, где суммировать столбцы

Решение

Вы должны использовать массив $sumCol собирать суммы столбцов:

Размер должен быть как количество столбцов.

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

echo 'SUM'; foreach($sumCol as $key2 => $value2) < echo''.round($sumCol[$key2],0).''; //echo $sumCol > echo ''; echo ''; 

Другой способ — определить второй цикл, в котором вы сначала выполняете итерации по столбцам, а затем — по строкам.

Другие решения

Источник

Создать таблицу из двумерного массива php

[1] => Array
(
[0] => :LogBot
[1] => 2
[2] => 1
[3] => Фамилия
[4] => Имя
[5] => Отчество
[6] => программист
[7] => :+38097955637
[8] => 2
[9] => Фамилия
[10] => Имя
[11] => Отчество
[12] => консультант
[13] => +38097558637
)

И нужно из такого массива сформировать таблицу по типу как на картинке О_о (скрин приложу)

Загвоздка в том, что у подмассивов разный размер!!

Если кто знает как это сделать поделитесь инфой пожалуйста ))

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

Как добавить в таблицу dataGridView элементы двумерного массива
Как добавить в таблицу dataGridView элементы, т.е из массива двумерного сформировать таблицу .

Формирование двумерного массива через функцию и последующий его вывод в таблицу
Друзья, возникла проблема, необходимо вывести двумерный массив в таблицу и посчитать строку с.

Читайте также:  Select all function html

Данные о ценах в М магазинах для N видов товара хранятся в виде двумерного массива. Сформировать таблицу
вот код,но выскакивает ошибка Run-Time Check Failure #3 — The variable ‘i’ is being used without.

Эксперт JSЭксперт HTML/CSSЭксперт PHP

В том и суть, что в первом подмассиве 8 элементов, а во тором 14. Но в итоге дожна получится таблица как на скрине.

Эксперт JSЭксперт HTML/CSSЭксперт PHP

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
$arr =[ ["Триалан",1,1,"Фамилия","Имя","Отчество","Программист","+3434355"], ["ббббббб",1,"Фамилия","Имя","Отчество","Программист","+3434355","dwdwdw",1,"Фамилия","Имя","Отчество","Программист","+3434355"] ]; $chunk= array_chunk($arr[1],7);//разбиваем 2 массив по 7 элементов unset($arr[1]); $a = array_merge($arr,$chunk); echo "";for($i=0;$icount($a);$i++){ echo "";for($j=0;$jcount($a,COUNT_RECURSIVE);$j++){ if($j>=7) continue; echo "";}echo"";}echo"
".$a[$i][$j]."
"
;

ЦитатаСообщение от Takumi93 Посмотреть сообщение

а должно быть 16 , что бы можно было разбить по 8. и получить как в 1 массиве. Ибо тогда таблица не сходится. в 1 массиве 8 элеменов во 2 и 3 по 7.
А , не заметил у вас потом 2 строки пропущены.

for($i=0,$cnt=count($array);$i$cnt;$i++) { echo ''; if(isset($array[$i])) { echo $array[$index]; } echo ''; }

Эксперт PHP

Лучший ответ

Сообщение было отмечено Takumi93 как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
$arr = array( 0 => array( 0 => 'Триалан', 1 => 1, 2 => 1, 3 => 'Фамилия', 4 => 'Имя', 5 => 'Отчество', 6 => 'программист', 7 => '+380979818637', ), 1 => array( 0 => ':LogBot', 1 => 2, 2 => 1, 3 => 'Фамилия', 4 => 'Имя', 5 => 'Отчество', 6 => 'программист', 7 => '+38097955637', 8 => 2, 9 => 'Фамилия', 10 => 'Имя', 11 => 'Отчество', 12 => 'консультант', 13 => '+38097558637', ) ); echo '';foreach($arras$row){echo'';$num=(count($row)-2)/6;for($i=0;$i $num; ++$i) { echo '';echo'';echo'';for($j=3;$j 8; ++$j) { echo '';}echo'';}}echo'
Количество участниковФамилияИмяОтчествоДолжностьНомер телефона
' . ($row[2+6*$i] == 1 ? $row[0] : '') . ' ' . ($row[2+6*$i] == 1 ? $row[1+6*$i] : '') . ' ' . $row[$j+6*$i] . '
'
;

И еще вопрос, а как добавить чтобы еще выводился номер пользователя ?

array( ['var1'] => Триалан ['num1'] => 1 ['num2'] => 1 ['name3'] => Фамилия ['name1'] => Имя ['name2'] => Отчество ['prof'] => программист ['phone'] => +380979818637 );

ЦитатаСообщение от Takumi93 Посмотреть сообщение

Эксперт JSЭксперт HTML/CSSЭксперт PHP

ЦитатаСообщение от полудух Посмотреть сообщение

Эксперт JSЭксперт HTML/CSSЭксперт PHP

ЦитатаСообщение от полудух Посмотреть сообщение

Эксперт JSЭксперт HTML/CSSЭксперт PHP

ЦитатаСообщение от полудух Посмотреть сообщение

$a = [1,2,3,4,5]; //список $a = ["name"=>"Вася","age"=>12]; //ассоциативный $a = ["name"=>"Вася",2,3,"age"=>12]; //смешанный

Если я не ошибаюсь, когда читал на Хабре как устроены массивы в php, там так же говорилось о списках,ассоциативных и смешанных.
p.S. Возможно я не прав, переубедите меня.

что это за бред, вы хоть задумайтесь

На самом деле массив в PHP — это упорядоченное отображение, которое устанавливает соответствие между значением и ключом. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стек, очередь и, возможно, что-то еще. Так как значением массива может быть другой массив PHP, можно также создавать деревья и многомерные массивы.

так вот цифры не делают массив «списком»
каждая цифра это ключ, который содержит значение
ключ=>значение
всегда.
И не важно, что этот ключ = цифра, она ключ, без которого значение не получить.
вы всегда обращаетесь к элементу массива через его ключ, какие нафиг списки?
сможете найти пример в ПХП, где эта парадигма отсутствует? тогда его и обсудим.

А если хотите увидеть тру списки, то сходите в REDIS, там их есть. Они выглядят как списки — без всяких индексов, и работают как списки — их можно сортировать, считать, добавлять в начало/конец, подрезать список.
Но нельзя вытащить по ключу значение! Там нет ключей.

> lrange hashes:14 0 -1 1) "keys:P8c3ZyjT61pAaD5dpy3cBG812Zo46l7W:1295183380" 2) "keys:1IQiCmTq5l5ai7WY7klFxDXRyUTG7Rj9:1295183380"

ключевая разница между списком и массивом: в списке вы выводите № нужной строки, а в массиве — значение по ключу.
Попробуйте найти эту разницу в ПХП.
В ПХП можно создать такой массив вообще:

В списке должны были бы быть упорядоченные строки — 0,1

Кстати, в перле только визуальное разделение (нафиг не нужное), там обычный массив выглядит так: @array, а хэш так: %hash
а на деле — все обращения по ключу и многомерность там через жопу.
А вот в пхп нету этих разделений, там все массивы имеют ключ=>значение и они бесконечно многомерные (в разумных пределах)
и ему так откровенно лучше.

Добавлено через 1 минуту

ЦитатаСообщение от Azdeman Посмотреть сообщение

Источник

PHP: Многомерные массивы

Массив не обязательно должен представлять из себя простой список ключей и простых значений. Каждый элемент массива может содержать в качестве значения другой массив, который в свою очередь может тоже содержать массив и так далее. Таким образом можно создавать двумерные и трехмерные массивы.

Двумерные массивы

Двумерный массив — массив, который в качестве значений хранит в себе другие массивы. Рассмотрим создание двумерного массива с помощью конструктора array() :

$flowers = array( array("розы", 100 , 15), array("тюльпаны", 60 , 25), array("орхидеи", 180 , 7) );

Массив $flowers содержит три массива. Как вы помните, для доступа к элементам одномерного массива надо указывать имя массива и ключ. То же самое верно и в отношении двумерных массивов, с одним исключением: каждый элемент имеет два ключа: первый для выбора строки, второй для выбора столбца.

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

Вместо номеров столбцов (индексы, присвоенные им по умолчанию) можно задавать им нужные ключи. Для этой цели используются ассоциативные массивы. Следующий массив будет хранить те же данные, но уже с использованием ключей для именования столбцов с информацией:

$flowers = array( array( "Название" => "розы", "Цена" => 100, "Количество" => 15 ), array( "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ), array( "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ) );

Ключи создают дополнительное удобство для работы с массивом в тех случаях, когда нужно получить одно из значений. Необходимые данные можно легко найти, если обратиться к правильной ячейке, используя значимые имена строки и столбца. Однако при этом мы теряем возможность последовательно обхода массива с помощью цикла for .

Мы можем перебрать с помощью цикла for только дочерние массивы. Так как они, в свою очередь, являются ассоциативными, то для перебора их элементов нужно воспользоваться циклом foreach , или перебрать элементы вручную:

Необязательно использовать для создания двумерного массива конструктор array() , можно воспользоваться и коротким синтаксисом — квадратными скобками:

$flowers = [ [ "Название" => "розы", "Цена" => 100, "Количество" => 15 ], [ "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ], [ "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ] ];

Трёхмерные массивы

Не обязательно ограничиваться только двумя измерениями: так же, как элементы массива могут содержать массивы, эти массивы, в свою очередь, могут содержать новые массивы.

Трёхмерный массив характеризует ширину, высоту и глубину. Если представлять двумерный массив в виде таблицы, то трёхмерный добавляет к этой таблице слои. Каждый элемент такого массива будет ссылаться на слой, строку и столбец.

Если немного модифицировать наш массив с цветами, то можно переделать его в трёхмерный. В коде, представленном ниже видно, что трёхмерный массив — массив, содержащий массив массивов:

$flowers = [ [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7], ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ] ];

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

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru

Источник

Оцените статью