Duncon,
вопрос в том: будешь ли ТЫ обрабатывать остальные данные, или нет :-)
Твоя переменная $d - это всего лишь указатель на ячейку памяти, не более.
вот тебе одномерный массив:
Код: Выделить всё
----
| d0 | <- d
| d1 |
| d2 |
| d3 |
----
двухмерный может быть реализован двумя способами:
(считаем для простоты, что d указывает на адрес 0).
Первый способ: ссылка на ссылку:
Код: Выделить всё
--------
0: | d0 = 2 | <- d + (i = 0) = 0
1: | d1 = 4 | <- d + (i = 1) = 1
--------
-----
2: | d00 | <- (d0 + (j = 0)) = 2
3: | d01 | <- (d0 + (j = 1)) = 3
----
-----
4: | d10 | <- (d1 + (j = 0)) = 4
5: | d11 | <- (d1 + (j = 1)) = 5
-----
Второй способ: смещение + смещение
Код: Выделить всё
-----
0: | d00 | <- d + j + i*max(j) = 0 + 0*2 = 0
1: | d01 | <- d + j + i max(i) = 1 + 0*2 = 1
2: | d10 | <- d + j + i max(i) = 0 + 1*2 = 2
3: | d11 | <- d + j + i max(i) = 1 + 1*2 = 3
----
/*
Скорей всего, если используется первый способ,
то синтаксис языка будет
d[ i ][ j ]
, а если второй
d[i,j],
но это лишь предположение.
*/
В любом случае, как ты сам видишь,
для получения значения в массиве нужно всего лишь
просумировать i+j+..
добавить к d
и взять значение из ячейки с полученым адресом.
Так как ты думаешь, будут ли обрабатываться остальные данные? ;-)