2010-10-11 2 views
2

Я учу php. Несмотря на столько примеров на google, я все еще запутался в реализации массивов, которые являются двумерными и трехмерными. Может ли кто-нибудь объяснить, простыми словами, пример?Я так запутался с ассоциативными массивами в php (двух и трехмерных)

+3

Try, чтобы избежать получения случайных кусков PHP из поиска Google. Вы обнаружите, что ваша база знаний немного отсутствует. Вместо этого ознакомьтесь с этим руководством по PHP: http://www.tuxradar.com/practicalphp. В частности, раздел о массивах: http://www.tuxradar.com/practicalphp/5/0/0 – treeface

+1

@treeface: Я согласен. После барахтаться на Google я наконец нашел эту книгу и начал изучать, и я начал наслаждаться PHP. Это лучшая книга PHP, которую я нашел, безусловно. @ user472625: Сидеть и проходить через всеобъемлющую книгу, подобную этой, даст вам прочное понимание основ и способов их использования. И это намного веселее, потому что вы можете отслеживать свой собственный прогресс. Чтение кучи случайных сайтов оставит вас в замешательстве, но прохождение глав, написанных одним и тем же (опытным) учителем, будет означать, что у вас есть последовательное понимание, которое вы можете использовать позже. –

+0

@Matt Ball: В PHP все массивы ассоциативны. Выполнение 'array (" foo "," bar "," baz ")' такое же, как 'array (0 =>" foo ", 1 =>" bar ", 2 =>" baz ")'. В первом примере PHP просто назначает вам ключи. –

ответ

1

Существует также очень простой способ начать работу с многомерными массивами.

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

Он должен выглядеть примерно так.

ARRAY0 { 
     key0.0 => "value0.0", 
     key0.1 => "value0.1", 
     key0.2 => ARRAY1 { 
          key1.0 => "value1.0", 
          key1.1 => ARRAY2 { 
              key2.0 => "value2.0", 
              key2.1 => "value2.1", 
            }, 
          key1.2 => "value1.2", 
        }, 
     key0.3 => "value0.3", 
}; 

Это просто мой способ визуализации массивов вы можете придумать свой собственный синтаксис, если вы хотите.

3

Это массивы, которые вложены в другие массивы. В зависимости от того, насколько глубоко они вложены, определяется, какой размер они являются.

Ниже приведен пример массива 1D и 2D соответственно.

$arr = 
array(
    'item1' => 543, 
    654 => true, 
    'xas' => 0.54 
); 
// Accessing $arr[654] (returns true) 
$arr2 = array(
    array 
    (
     'a' => 54, 
     'b' => 'Hello' 
    ), 
    array 
    (
     'itemx' => true, 
     954 => 'hello' 
    ) 
); 
// Accessing $arr[0]['b'] (equal to 'Hello') 

Для 3D-массива, вы просто добавить еще один вложенный массив в один из элементов 2-го уровня массива в примере 2D массива.

7

Самый простой пример для меня - это представление таблицы SQL как многомерного массива.

таблица может выглядеть следующим образом:

ID | Name | Email 
-------------------------- 
1 | John | [email protected] 
2 | Jane | [email protected] 

И массив может выглядеть следующим образом:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => John 
      [2] => [email protected] 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => Jane 
      [2] => [email protected] 
     ) 

) 

таблица превращается в массив массивов. К каждой строке обращается первый индекс и каждый столбец вторым индексом.

Так что если я хотел бы получить «Джейн» Я хотел бы использовать $ массив [1] [1]

Ассоциативный массив той же таблицы может выглядеть следующим образом:

Array 
(
    [0] => Array 
     (
      [ID] => 1 
      [Name] => John 
      [Email] => [email protected] 
     ) 

    [1] => Array 
     (
      [ID] => 2 
      [Name] => Jane 
      [Email] => [email protected] 
     ) 

) 

Вы бы доступ «Jane», как $ array [1] ["Name"]

+0

Возможно, вы захотите добавить пример для ассоциативных массивов, используя тот же «пример таблицы», чтобы дать более подробную информацию. –

+0

Хорошая идея, сделано. Благодарю. – rocketeerbkw

+0

Супер один ... спасибо – user472625

1

Массив может иметь в себе что-нибудь в нем - от целого до строки до объекта с полным разнесением - к другому массиву.

Любой массив сам по себе называется одномерным массивом. Если вы считаете, что это ряд строк, то это одна строка. Если в массиве есть другой массив, то это двумерный массив: один из его полей будет столбцом, добавляющим другое измерение.

$users = array() ; 

$jim = array('Jim', 'Smith') ; 

$users[] = $jim ; 

//or in one step 
$users = array(array('Jim', 'Smith')) ; 

//then to access the first user: 
$jim = $users[0]; 

//and his firstname: 
$jimsname = $users[0][0] ; 
//or 
$jimsname = $jim[0] ; 

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

$users = array() ; 

$jim = array(
    'firstname' => 'Jim', 
    'lastname' => 'Smith' 
) ; 

$users['jim'] = $jim ; 

//then to access jim: 
$jim = $users['jim']; 

//and his firstname: 
$jimsname = $users['jim']['firstname'] ; 
//or 
$jimsname = $jim['firstname'] ; 

Это довольно много его. Вы можете увидеть больше here и в

0

попробуйте это просто.

$anArray['abc'][1]['qwe']='this is a value'; 
$anArray['abc']['avs']='another value'; 

echo $anArray['abc'][1]['qwe']; 
echo $anArray['abc']['avs']; 

/*

Массив немного отличается в PHP. Элементы массива можно рассматривать как отдельные переменные ($ anArray ['abc] [1] [' qwe '] или $ anArray [' abc '] [' avs ']). И вы можете создавать их как отдельные переменные. Это дополнение к обычным массивам. Поддерживается также обычный способ.

Но что произойдет, если вы пишете: $anArray['abc']='something else';

$anArray['abc'] это просто переменная строка с этой точки. Таким образом, вы не можете (или, возможно, не так, как я его еще не тестировал, и практически все возможно) получить доступ $anArray['abc'][1]['qwe'].

Поэтому постарайтесь думать элементы, такие как переменные, первый;)

*/

Смежные вопросы