Массив (программирование)
Индексный массив (в некоторых языках программирования также таблица , ряд ) - именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом (в отличие от списка), доступ к которым осуществляется по индексу.
Индекс массива - целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.
Общее описание
Массив - Упорядоченный набор данных, для хранения данных одного типа, идентифицируемых с помощью одного или нескольких индексов . В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа.
Количество используемых индексов массива может быть различным. Массивы с одним индексом называют одномерными , с двумя - двумерными и т. д. Одномерный массив нестрого соответствует вектору в математике, двумерный - матрице. Чаще всего применяются массивы с одним или двумя индексами, реже - с тремя, ещё большее количество индексов встречается крайне редко.
Пример статического массива на Паскале -
WordArray: array [ Word ] of Integer ; // Статический, размер = High(Word) + 1 multiArray: array [ Byte , 1 ..5 ] of Char ; // Статический массив, 2 измерения rangeArray: array [ 5 ..20 ] of String ; // Статический массив, размер = 16
Пример статического массива на Си -
Int Array[ 10 ] ; // Статический, размер 10, базовый тип данных - целое число (int) double Array[ 12 ] [ 15 ] ; // Статический массив, 2 измерения, базовый тип данных - число // с дробной частью (double)
Поддержка индексных массивов (свой синтаксис объявления, функции для работы с элементами и т. д.) есть в большинстве высокоуровневых языков программирования . Максимально допустимая размерность массива, типы и диапазоны значений индексов, ограничения на типы элементов определяются языком программирования и/или конкретным транслятором.
В языках программирования, допускающих объявления программистом собственных типов , как правило, существует возможность создания типа «массив». В определении такого типа может указываться размер, тип элемента, диапазон значений и типы индексов. В дальнейшем возможно определение переменных созданного типа. Все такие переменные-массивы имеют одну структуру. Некоторые языки поддерживают для переменных-массивов операции присваивания (когда одной операцией всем элементам массива присваиваются значения соответствующих элементов другого массива).
Объявление типа «массив» в Паскале -
Type TArrayType = array [ 0 ..9 ] of Integer ; (* Объявления типа "массив" *) var arr1, arr2, arr3: TArrayType; (* Объявление трёх переменных-массивов одного типа *)
Специфические типы массивов
Динамические массивы
Динамическим называется массив, размер которого может меняться во время исполнения программы. Для изменения размера динамического массива язык программирования , поддерживающий такие массивы, должен предоставлять встроенную функцию или оператор. Динамические массивы дают возможность более гибкой работы с данными, так как позволяют не прогнозировать хранимые объёмы данных, а регулировать размер массива в соответствии с реально необходимыми объёмами. Обычные, не динамические массивы называют ещё статическими .
Пример динамического массива на Delphi
ByteArray: Array of Byte ; // Одномерный массив multiArray: Array of Array of string ; // Многомерный массив
Пример динамического массива на Си
Float *array1; // Одномерный массив int **array2; // Многомерный массив array1=(float *) malloc (10 *sizeof (float ) ) ; // выделение 10 блоков по sizeof(float)байт каждый array2=(int **) malloc (16 *sizeof (int ) ) ; // выделение 16*8 блоков по sizeof(int) байт каждый for (i=0 ;i<16 ;i++) array2[ i] =(int *) malloc (8 *sizeof (int ) ) ;
Гетерогенные массивы
Гетерогенным называется массив, в разные элементы которого могут быть непосредственно записаны значения, относящиеся к различным типам данных . Массив, хранящий указатели на значения различных типов, не является гетерогенным, так как собственно хранящиеся в массиве данные относятся к единственному типу - типу «указатель». Гетерогенные массивы удобны как универсальная структура для хранения наборов данных произвольных типов. Отсутствие их поддержки в языке программирования приводит к необходимости реализации более сложных схем хранения данных. С другой стороны, реализация гетерогенности требует усложнения механизма поддержки массивов в трансляторе языка.
Массивы массивов
Многомерные массивы, как правило реализованные как одномерные массивы, каждый элемент которых, является ссылкой на другой одномерный массив.
Реализация
Стандартным способом реализации статических массивов с одним типом элементов является следующий:
- Под массив выделяется непрерывный блок памяти объёмом S*m 1 *m 2 *m 3 …m n , где S - размер одного элемента, а m 1 …m n - размеры диапазонов индексов (то есть количество значений, которые может принимать соответствующий индекс).
- При обращении к элементу массива A адрес соответствующего элемента вычисляется как B+S*(i 1p *m 1 +i 2p *m 2 +…+i (n-1)p *m n-1 +i np), где B - база (адрес начала блока памяти массива), i kp -значение k-го индекса, приведённое к целому с нулевым начальным смещением.
Таким образом, адрес элемента с заданным набором индексов вычисляется, так что время доступа ко всем элементам массива одинаково.
Первый элемент массива, в зависимости от языка программирования , может иметь различный индекс. Различают три основных разновидности массивов: с отсчетом от нуля (zero-based), с отсчетом от единицы (one-based), и с отсчетом от специфического значения заданного программистом (n-based). Отсчет индекса элемента массивов с нуля более характерен для низкоуровневых ЯП, однако этот метод был популяризирован в языках более высокого уровня языком программирорования С.
Более сложные типы массивов - динамические и гетерогенные - реализуются сложнее.
Достоинства
- легкость вычисления адреса элемента по его индексу (поскольку элементы массива располагаются один за другим)
- одинаковое время доступа ко всем элементам
- малый размер элементов: они состоят только из информационного поля
Недостатки
- для статического массива - отсутствие динамики, невозможность удаления или добавления элемента без сдвига других
- для динамического и/или гетерогенного массива - более низкое (по сравнению с обычным статическим) быстродействие и дополнительные накладные расходы на поддержку динамических свойств и/или гетерогенности.
- при работе с массивом в стиле C (с указателями) и при отсутствии дополнительных средств контроля - угроза выхода за границы массива и повреждения данных
Массив - это однородный, упорядоченный структурированный тип данных с прямым доступом к элементам. Элементы массива объединяются общим именем и занимают в компьютере определенную конечную область памяти. К любому элементу массива можно обратиться, указав имя массива и индекс элемента в массиве.
Одномерные и двумерные массивы
Если в массиве для обращения к элементам используется только один порядковый номер, то такой массив называется линейным, или одномерным . Одномерный массив можно представить в виде таблицы, в которой существует только одна строка.
Количество индексов элементов массива определяет размерность массива.
Массивы с двумя индексами называют двумерными . Такие массивы можно представить в виде таблицы, в которой номер строки соответствует первому индексу, а номер ячейки в строке (номер столбца) - второму индексу.
Чаще всего применяются одномерные массивы и двумерные массивы .
Объявление массива
Чтобы объявить массив (это необходимо для выделения памяти, в которой будут храниться значения элементов массива), следует указать его имя и размерность при помощи ключевого слова МАССИВ .
массив А
В данном примере будет объявлен одномерный массив А, состоящий из 10 элементов.
массив М
В данном примере будет объявлен двумерный массив М, который можно представить в виде таблицы, состоящей из 4-х строк по 5 ячеек в каждой строке.
Ограничение на размер одномерного массива - 1000 элементов, для двумерных - 1000х1000. В учебных целях лучше не использовать массивы более чем из 500 элементов, чтобы не замедлять время обработки. Все массивы в Game Logo имеют числовой тип (действительные числа).
Работа с массивами
После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись M позволяет обратиться ко второму элементу массива M.
При работе с двумерным массивом указываются два индекса. Например, запись
M делает доступным для обработки значение элемента, находящегося в третьей строке четвертого столбца массива M.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов или использоваться в качестве аргументов в командах.
Присваивание значений элементам массива
А = 15
Третьему элементу массива А будет присвоено значение 15.
М = 25
Элементу массива М, находящемуся во второй строке четвертого столбца, будет присвоено значение 25.
Ввести значение в элемент массива можно также при помощи команды СПРОСИ.
спроси А
Загрузить данные в массив можно при помощи команды ЗАГРУЗИ.
Примеры для одномерного массива А.
загрузи в A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
конец загрузки
загрузи в A
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
конец загрузки
Если данных будет недостаточно, то часть элементов останется незаполненной. Если избыточно, то они отсекутся.
Пример для двумерного массива М.
загрузи в M
56 78 56 36 24 15 17 25 36 25
15 17 25 36 24 56 78 56 36 24
15 17 25 36 24 56 78 56 36 24
78 56 36 24 15 17 17 25 36 25
36 24 56 78 24 56 78 56 36 24
39 78 56 36 24 25 15 15 89 71
конец загрузки
Заполнение массива случайными числами
Заполнить массив случайными числами можно при помощи цикла.
Пример заполнения элементов массива А псевдослучайными целыми числами в диапазоне от 10 до 99:
массив А
переменная х
Повторить для х = 1 до 100 {
А[х] = Int(случайное * 89) + 10
}
Вывод значений элементов массива
ПИШИ A
На экран будет выведено значение третьего элемента одномерного массива А.
ПИШИ# A
Будут выведены значения всех элементов массива А.
Знак # в команде ПИШИ выводит массив целиком. Для одномерных массивов вывод осуществляется с переносом строк. Для двумерных - как есть в виде таблицы, поэтому возможен выход за пределы поля.
Вывод массива в графическом виде
Массив может быть выведен в виде ряда точек (или таблицы из точек для двумерных массивов), цвет которых соответствует значению элемента массива (диапазон от 0 до 15, все числа меньше 0 отображаются черным цветом, больше 15 - белым). Этот способ удобен для моделирования клеточных автоматов, для визуализации сортировки и во многих других случаях, когда требуется визуальное восприятие происходящего в массиве.
ТОЧКА# [, ]
Необязательные параметры и взяты в скобки. Они обеспечивают отступ от начала координат (верхнего левого угла).
точка# M, 150, 50
Замена и копирование значений в массивах
Команда для замены во всем массиве одного значения на другое.
заменить в на
Команда для копирования всех значений одного массива в другой массив. Количество элементов и размерность массивов должны совпадать.
копировать в
При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке Си используют объекты, называемые массивами.
— это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем.
Массив характеризуется следующими основными понятиями:
Элемент массива (значение элемента массива)
– значение, хранящееся в определенной ячейке памяти, расположенной в пределах массива, а также адрес этой ячейки памяти.
Каждый элемент массива характеризуется тремя величинами:
- адресом элемента — адресом начальной ячейки памяти, в которой расположен этот элемент;
- индексом элемента (порядковым номером элемента в массиве);
- значением элемента.
Адрес массива – адрес начального элемента массива.
Имя массива – идентификатор, используемый для обращения к элементам массива.
Размер массива – количество элементов массива
Размер элемента – количество байт, занимаемых одним элементом массива.
Графически расположение массива в памяти компьютера можно представить в виде непрерывной ленты адресов.
Представленный на рисунке массив содержит q элементов с индексами от 0 до q-1 . Каждый элемент занимает в памяти компьютера k байт, причем расположение элементов в памяти последовательное.
Адреса i -го элемента массива имеет значение
Адрес массива представляет собой адрес начального (нулевого) элемента массива. Для обращения к элементам массива используется порядковый номер (индекс) элемента, начальное значение которого равно 0 . Так, если массив содержит q элементов, то индексы элементов массива меняются в пределах от 0 до q-1 .
Длина массива – количество байт, отводимое в памяти для хранения всех элементов массива.
ДлинаМассива = РазмерЭлемента * КоличествоЭлементов
Для определения размера элемента массива может использоваться функция
int
sizeof
(тип);
Например,
sizeof
(char
) = 1;
sizeof
(int
) = 4;
sizeof
(float
) = 4;
sizeof
(double
) = 8;
Объявление и инициализация массивов
Для объявления массива в языке Си используется следующий синтаксис:
тип имя[размерность]={инициализация};
Инициализация
представляет собой набор начальных значений элементов массива, указанных в фигурных скобках, и разделенных запятыми.
int
a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // массив a из 10 целых чисел
Если количество инициализирующих значений, указанных в фигурных скобках, меньше, чем количество элементов массива, указанное в квадратных скобках, то все оставшиеся элементы в массиве (для которых не хватило инициализирующих значений) будут равны нулю. Это свойство удобно использовать для задания нулевых значений всем элементам массива.
int
b = {0}; // массив b из 10 элементов, инициализированных 0
Если массив проинициализирован при объявлении, то константные начальные значения его элементов указываются через запятую в фигурных скобках. В этом случае количество элементов в квадратных скобках может быть опущено.
int
a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
При обращении к элементам массива индекс требуемого элемента указывается в квадратных скобках .
Пример на Си
1
2
3
4
5
6
7
8
#include
int
main()
{
int
a = { 5, 4, 3, 2, 1 }; // массив a содержит 5 элементов
printf("%d %d %d %d %d\n"
, a, a, a, a, a);
getchar();
return
0;
}
Результат выполнения программы:
Однако часто требуется задавать значения элементов массива в процессе выполнения программы. При этом используется объявление массива без инициализации. В таком случае указание количества элементов в квадратных скобках обязательно.
int
a;
Для задания начальных значений элементов массива очень часто используется параметрический цикл:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include
int
main()
{
int
a;
int
i;
// Ввод элементов массива
for
(i = 0; i<5; i++)
{
printf("a[%d] = "
, i);
scanf("%d"
, &a[i]);
}
// Вывод элементов массива
for
(i = 0; i<5; i++)
printf("%d "
, a[i]); // пробел в формате печати обязателен
getchar(); getchar();
return
0;
}
Результат выполнения программы
Многомерные массивы
В языке Си могут быть также объявлены многомерные массивы. Отличие многомерного массива от одномерного состоит в том, что в одномерном массиве положение элемента определяется одним индексом, а в многомерном - несколькими. Примером многомерного массива является матрица.
Общая форма объявления многомерного массива
тип имя[размерность1][размерность2]...[размерностьm];
Элементы многомерного массива располагаются в последовательных ячейках оперативной памяти по возрастанию адресов. В памяти компьютера элементы многомерного массива располагаются подряд, например массив, имеющий 2 строки и 3 столбца,
int
a;
будет расположен в памяти следующим образом
Общее количество элементов в приведенном двумерном массиве определится как
КоличествоСтрок * КоличествоСтолбцов = 2 * 3 = 6.
Количество байт памяти, требуемых для размещения массива, определится как
КоличествоЭлементов * РазмерЭлемента = 6 * 4 = 24 байта.
Инициализация многомерных массивов
Значения элементов многомерного массива, как и в одномерном случае, могут быть заданы константными значениями при объявлении, заключенными в фигурные скобки {} . Однако в этом случае указание количества элементов в строках и столбцах должно быть обязательно указано в квадратных скобках .
Пример на Си
1
2
3
4
5
6
7
8
9
#include
int
main()
{
int
a = { 1, 2, 3, 4, 5, 6 };
printf("%d %d %d\n"
, a, a, a);
getchar();
return
0;
}
Однако чаще требуется вводить значения элементов многомерного массива в процессе выполнения программы. С этой целью удобно использовать вложенный параметрический цикл .
Пример на Си
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
#define
_CRT_SECURE_NO_WARNINGS
#include
int
main()
{
int
a; // массив из 2 строк и 3 столбцов
int
i, j;
// Ввод элементов массива
for
(i = 0; i<2; i++) // цикл по строкам
{
for
(j = 0; j<3; j++) // цикл по столбцам
{
printf("a[%d][%d] = "
, i, j);
scanf("%d"
, &a[i][j]);
}
}
// Вывод элементов массива
for
(i = 0; i<2; i++) // цикл по строкам
{
for
(j = 0; j<3; j++) // цикл по столбцам
{
printf("%d "
, a[i][j]);
}
printf("\n"
); // перевод на новую строку
}
getchar(); getchar();
return
0;
}
Передача массива в функцию
Обработку массивов удобно организовывать с помощью специальных функций. Для обработки массива в качестве аргументов функции необходимо передать
- адрес массива,
- размер массива.
Исключение составляют функции обработки строк, в которые достаточно передать только адрес.
При передаче переменные в качестве аргументов функции данные передаются как копии. Это означает, что если внутри функции произойдет изменение значения параметра, то это никак не повлияет на его значение внутри вызывающей функции.
Если в функцию передается адрес переменной (или адрес массива), то все операции, выполняемые в функции с данными, находящимися в пределах видимости указанного адреса, производятся над оригиналом данных, поэтому исходный массив (или значение переменной) может быть изменено вызываемой функцией.
Пример на Си
Дан массив из 10 элементов. Поменять местами наибольший и начальный элементы массива. Для операций поиска максимального элемента и обмена использовать функцию.
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
#define
_CRT_SECURE_NO_WARNINGS
#include
// Функция обмена
void
change(int
*x, int
n)
{
// x - указатель на массив (адрес массива)
// n - размер массива
int
i;
int
max, index;
max = x;
index = 0;
// Поиск максимального элемента
for
(i = 1; i
if
(x[i]>max)
{
max = x[i];
index = i;
}
}
// Обмен
x = x;
x = max;
}
// Главная функция
int
main()
{
int
a;
int
i;
for
(i = 0; i<10; i++)
{
printf("a[%d] = "
, i);
scanf("%d"
, &a[i]);
}
change(a, 10); // вызов функции обмена
// Вывод элементов массива
for
(i = 0; i<10; i++)
printf("%d "
, a[i]);
getchar();
getchar();
return
p = p * x[i];
}
return
p;
}
// Главная функция
int
main()
{
int
a; // объявлен массив a из 5 элементов
int
i;
int
pr;
// Ввод элементов массива
for
(i = 0; i<5; i++)
{
printf("a[%d] = "
, i);
scanf("%d"
, &a[i]); // &a[i] - адрес i-го элемента массива
}
pr = func(a, 5); // вычисление произведения
printf("\n pr = %d"
, pr); // вывод произведения четных элементов
getchar(); getchar();
return
0;
}
>> Статьи
Что такое массивы в программировании?
Массив – это переменная, которая является совокупностью компонентов одного типа. Чтобы использовать массивы в программировании, потребуется предварительное описание определенного типа и указание доступа к элементам. Элементы массива в программировании объединены общим именем. Если требуется обратиться к определенному элементу массива, то достаточно указать имя и индекс. В математике есть понятный пример массива – это векторы и последовательности чисел, в которых группа чисел может обозначаться одним именем. Обратившись к конкретному числу, используют разные индексы.Виды массивов: одномерные и двухмерные
Если для обращения к элементам использован единственный порядковый номер , то массив называется одномерный или линейный. Выглядит как таблица с одной строкой. Размерность массива определяется посредством количества индексов элементов.
Когда использовано два индекса, то массив будет двухмерным. Если массив представлен в идее таблицы, то номер строки будет соответствовать первому индексу, а номер столбца или ячейки – второму.
Как заполнить массив?
Одним из способов заполнения массива является оператор присваивания. Когда элементы связаны реккурентно и имеют определенную зависимость, подойдет такой способ заполнения. Также можно заполнить однородный массив однородными элементами или значениями, которые получены посредством датчика случайных чисел..
Какие действия производятся с элементами массива?
Сортировка элементов в определенном порядке – убывание или возрастание
Поиск значений
Подсчет количества элементов в массиве, соответствующих определенному условию
Когда два массива эквивалентны, то возможно присвоение одному массиву имени другого. Все компоненты копируются в тот массив, которому и присваивается значение.
Как объявить массив
Чтобы объявить массив и выделить в памяти ячейку для хранения элементов, следует указать размерность и имя. Ключевое слово – массив. К примеру, А 20 означает, что одномерный массив состоит из двадцати элементов. К 6,5 означает, что это двухмерный массив , который представлен в виде таблицы из шести строк и пяти ячеек. Если говорить об ограничениях одномерного массива в программировании, то оно составляет тысячу элементов. Для двухмерных массивов максимально допустимым значением станет таблица из тысячи строк и тысячи ячеек.
Массивы в программировании: работа с ними
Когда массив объявлен, каждый элемент подлежит обработке с указанием имени и индекса в квадратных скобках. Чтобы отличить одномерный массив от двухмерного, используются два индекса. Элементы массива с присвоением индекса называются индексированными переменными, но могут использоваться и в качестве простых переменных. К примеру, быть аргументом в команде.
Типы имени, элементов, индексов
Как придумать имя массиву? Подойдет произвольный идентификатор. По правилам стиля имя должно начинаться с буквы Т большого шрифта. Таким образом, можно отличить идентификатор от других. Последующую часть имени можно придумать в соответствии с конкретными данными для хранения в массиве. Вторая составляющая имени также должна начинаться с заглавной буквы. T Vector может хранить информацию о координатах абстрактного вектора.
Что касается типа элементов в массиве, то это может быть ранее введенный или стандартный. Для создания индексов используются целые числа, а типом станет диапазон. Допустим, тип 1…20 говорит о том, что массив состоит из двадцати элементов, каждый из которых соответствует целому числу от одного до двадцати.
Любой, кто изучал программирование в университете, знает, что преподаватели стремятся дать только основной, базисный материал для своих студентов. Тема массивов также рассматривается, но на более поздних курсах. Почему? Потому что массивы - это основа, позволяющая программисту работать с большими объёмами информации.
Введение
Сегодняшнюю тему мы начнем с того, что введём определение данному термину. Массивы - это элементы представляющие собой набор данных в форме таблицы или строки. Представьте себе ряд случайных чисел: 1, 6, 2, 4, 8. Это и будет массивом. Каждая цифра, написанная в строке, имеет свой порядковый номер, и именно это позволяет соотнести (занести) их с массивом в программировании.
Запись
Рассмотрим, как записываются массивы на практике. Записать, обозначить массивы - это означает указать для создаваемой программы их тип (какие значения будут храниться в массиве) и количество ячеек. Иногда программисты создают безмерные массивы, без указания точного количества элементов, но тогда при обращении к ним надо быть очень внимательными, чтобы программа не зациклилась и не начала обращаться к пустым ячейкам.
- D: array of real; - так записывается Если вы при создании программы знаете, что у вас будет максимум 5 элементов, то можете воспользоваться записью D: array of real;
Как вы могли догадаться D - это буква, означающая имя массива; real - это тип (формат) данных, которые могут содержаться в - это количество элементов массива.
Обращение
Для того чтобы работать с элементом массива, к нему надо обратиться из программы. Массивы - это такие же числа или слова, как и любые другие. Для того чтобы работать с элементом массива, надо ввести: D. Это позволит выбрать первый элемент массива и проводить с ним операции. Например:
- print (D); - данная команда позволит вывести на экран пользователя значение, содержащееся в 1-ой ячейке массива.
Стоит отметить, что если вы собираетесь проводить математические операции с массивами, то вам следует обратить внимание на тип. Вы сможете это проделать, только если у вас имеется массив чисел. Чтобы было понятнее:
- Если у вас имеется массив D: array of text; - и в ячейке D=1, то вы не сможете использовать данный элемент в математических операциях, потому что для программы "1" - это будет просто слово "один", а не цифра. Поэтому следите за переменными и их типами.
Если вы планируете математические операции, или в массиве просто должны будут храниться числа, лучше обеспокойтесь его типом заранее и присвойте "real" или "integer".
Таблица
Давайте теперь поговорим про окружающее нас пространство. Мы живем в трехмерном мире, и большинство объектов может быть описано 3-мя параметрами: длина, ширина, высота. Так и у массивов существует размерность. Двумерные массивы - это таблицы с данными, в которых каждому элементу присуждается не один порядковый номер, а два - номер строки и номер столбца. При обращении к двумерному массиву нужно указывать оба числа - D.
Соответственно, такой массив будет в состоянии хранить больший объём данных. К сожалению, в старых языках программирования в большинстве случаев номером элемента массива могут выступать исключительно цифры. Поэтому хранение данных из больших таблиц становится весьма проблематичным из-за того, что каждому столбцу таблицы придется создавать отдельный массив.
Например, пусть у нас есть таблица, в которой записаны данные учеников. У них указаны: год рождения, фамилия, класс.
1989 | Иванов | Иван | 9 |
1988 | Петров | Петр | 10 |
.... |
В обычных условиях нам придется создавать несколько массивов, в зависимости от потребностей. Мы можем создать один двумерный массив числового типа, чтобы хранить год рождения и класс, и второй массив для хранения текстовой информации (Ф.И.). Но это неудобно. Во-первых, фамилию и имя, возможно, придется обрабатывать по отдельности. Во-вторых, можно запросто запутаться при заполнении массива с годом и классом. Поэтому проще будет создать 4 отдельных массива для каждого столбца. Согласитесь, очень громоздко?
PHP
PHP массивы позволяют решить проблему, о которой упоминалось выше. Дело в том, что в данном языке программирования вы можете задать не только тип данных в массиве, но и тип счетчика (индекса). Кроме того, в одном массиве могут содержаться данные самых различных типов. Создание (если необходимо взять один столбец):
- $array = array(1989, 1988, ...);
Это пример создания простейшего массива. Индекс создаётся автоматически и считается от нуля. То есть нулевой элемент массива - 1989, первый - 1988 и т.д. Но что если нам необходимо поместить всю таблицу в многомерный массив? Что представляют собой многомерные Это конструкции, в которых каждый элемент также является массивом. Как разобрать данный нам пример?
array(1989, "Иванов", "Иван", 9),
array(1988, "Петров", "Петр", 10),
Что мы имеем в итоге? Перед нами массив с именем $table, у которого строки соотвествуют строкам в представленной таблице. Если коворить об элементах массива, то выглядеть они будут так:
- $table = 1989, $table = "Иванов", $table = "Иван", $table = 9.
- $table = 1988, $table = "Петров", $table = "Петр", $table = 10.
При этом 0 и 3 столбцы массива будут числовыми, а 1 и 2 - текстовыми. При необходимости вы всегда сможете конвертировать необходимые данные в нужный формат и объединить ячейки.