例如:
$names = {[bob:27, billy:43, sam:76]};
然后可以这样引用它:
$names[bob]
Http://php.net/manual/en/language.types.array.php
<?php $array = array( "foo" => "bar", "bar" => "foo", ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ]; ?>
标准数组可以这样使用。
PHP 中没有字典,但 PHP 数组的行为与其他语言中的字典类似,因为它们既有索引又有键(与其他语言中的字典不同,后者只有键而没有索引)。
我是什么意思?
$array = array( "foo" => "bar", "bar" => "foo" ); // as of PHP 5.4 $array = [ "foo" => "bar", "bar" => "foo", ];
The following line is allowed with the above array in PHP, but there is no way to do an equivalent operation using a dictionary in a language like Python(which has both arrays and dictionaries).
print $array[0]
PHP 数组还可以通过向数组提供值来打印值
print $array["foo"]
普通 array可以作为字典数据结构。通常它有多种用途: 数组、列表(向量)、哈希表、字典、集合、堆栈、队列等。
array
$names = [ 'bob' => 27, 'billy' => 43, 'sam' => 76, ]; $names['bob'];
而且由于它的设计范围很广,所以不能充分利用特定的数据结构。您可以通过扩展 ArrayObject实现自己的 dictionary,也可以使用 SplObjectStorage类,它是 map (dictionary)实现,允许将对象分配为键。
ArrayObject
SplObjectStorage
使用数组:
<?php $arr = [ "key" => "value", "key2" => "value2" ];
如果您打算使用任意对象作为键,您可能会遇到“非法偏移量类型”。要解决这个问题,您可以使用 spl_object_hash函数的调用来包装密钥,该函数接受任何对象,并返回其唯一的散列。
spl_object_hash
但是,需要记住的一点是,键本身就是散列,因此您将无法从字典中获得用于生成这些散列的对象列表。这可能是您在特定实现中想要的,也可能不是。
举个简单的例子:
<?php class Foo { } $dic = []; $a = new Foo(); $b = new Foo(); $c = $a; $dic[spl_object_hash($a)] = 'a'; $dic[spl_object_hash($b)] = 'b'; $dic[spl_object_hash($c)] = 'c'; foreach($dic as $key => $val) { echo "{$key} -> {$val}\n"; }
我得到的输出是:
0000000024e27223000000005bf76e8a -> c 0000000024e27220000000005bf76e8a -> b
在不同的执行中,您的哈希值和哈希值可能是不同的。