Обе вещи, которые вы описываете, являются массивами. Единственное различие между ними состоит в том, что вы явно устанавливаете ключи для второго, и поэтому они известны как ассоциативные массивы . Я не знаю, откуда вы взяли терминологию Hash (Perl?), Но это не то, на что они ссылаются в PHP.
Так, например, если вы должны были сделать это:
$foo = array(1,2,3,4,5);
print_r($foo);
Вывод будет:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Как видите, ключи для доступа к введенным вами индивидуальным значениям созданы для вас, но, тем не менее, существуют. Так что этот массив, по сути, также ассоциативный. Другой «тип» массива точно такой же, за исключением того, что вы прямо говорите «Я хочу получить доступ к этому значению с помощью этого ключа» вместо автоматических числовых индексов (хотя ключ Вы также можете указать число).
$bar = array('uno' => 'one', 'dos' => 'two');
print_r($bar);
Будет выводить:
Array
(
[uno] => one
[dos] => two
)
Как и следовало ожидать, выполнение print $bar['one']
приведет к выводу uno
, а выполнение $foo[0]
из первого примера приведет к выводу 1
.
Что касается функций, функции PHP в большинстве случаев будут использовать один из этих «типов» массивов и делать то, что вам нужно, но есть некоторые отличия, о которых следует помнить, поскольку некоторые функции будут выполнять интересные вещи. на ваши индексы, а некоторые не будут. Обычно лучше прочитать документацию перед использованием функции массива, так как в ней будет указано, какой вывод будет зависеть от ключей массива.
Вы должны прочитать руководство для получения дополнительной информации.