Страница 1 из 1

про Многомерные массивы..

Добавлено: 04 май 2006, 17:40
Duncon
Интересует меня такой вопросик я задаю массив 2х мерный к примеру
$d['1']['werwer']
$d['1']['wr']
$d['2']['wer']
$d['2']['r']
$d['n']['']
Так вот будут ли обрабатываться при обращение к данным масива $d['2'] данные остальных массивов ( $d['1']...$d['n'][''])????

Добавлено: 04 май 2006, 21:04
Oscar
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
и взять значение из ячейки с полученым адресом.


Так как ты думаешь, будут ли обрабатываться остальные данные? ;-)

Добавлено: 05 май 2006, 08:50
Duncon
Блин Oscar, залечил, я не спрашивал как создавать массивы, меня больше волнует как они обрабатываются да забыл упомянуть мы о PHP говорим..
Так вот если это $d указатель на ечейку памяти значит весь масив обработтан и уже там!!!