PHP中的Array和Hash有什么区别?

fre*_*ara 5 php arrays hash language-comparisons

Array和Hash PHP有什么区别?

数组:array(1,2,3...)
哈希:array(key1=value1, key2=value2, ...)

它们是不同还是相同?

※例如,函数参数是否允许数组对哈希有效?

因为我用传统语言区分并使用它,我很困惑.

Pao*_*ino 15

你描述的东西都是数组.两者之间的唯一区别是您明确设置第二个键的键,因此它们被称为关联数组.我不知道你从哪里获得了Hash术语(Perl?),但这不是他们在PHP中所称的那些.

所以,例如,如果你这样做:

$foo = array(1,2,3,4,5);
print_r($foo);
Run Code Online (Sandbox Code Playgroud)

输出将是:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,访问您输入的各个值的键是为您创建的,但仍然存在.所以这个数组本质上也是关联的.数组的另一个"类型"是完全相同的方式,除了你有意地说"我想用这个键访问这个值"而不是自动数字索引(虽然你提供的密钥也可以是数字).

$bar = array('uno' => 'one', 'dos' => 'two');
print_r($bar);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [uno] => one
    [dos] => two
)
Run Code Online (Sandbox Code Playgroud)

正如您可能期望的那样,做print $bar['one']输出uno,并$foo[0]从第一个示例做输出1.

就函数而言,PHP函数大多数时候都会使用这些"类型"数组中的一个并按照你想要的那样做,但是要注意区别,因为有些函数会对你的索引做一些时髦的事情.有些人不会.通常最好在使用数组函数之前阅读文档,因为它会根据数组的键来记录输出.

您应阅读手册以获取更多信息.

  • "驱动"php数组的内部数据类型称为HashTable. (2认同)