例如:
$names = {[bob:27, billy:43, sam:76]};
然后能够像这样引用它:
$names[bob]
答案 0 :(得分:58)
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",
];
?>
标准数组可以这样使用。
答案 1 :(得分:0)
可以称重,是的。
它们在Php中使用时非常有效。
让我们考虑以下问题:编写一个函数,该函数打印出所有字母出现在给定字符串中的次数。为了简化字典的使用,我决定使用PHP,但是这种方法几乎可以在任何语言中看到。
没有字典的一种方法可能是:
<?php
$string = "Hello World!";
$split = str_split($string);
getCount($split);
function getCount($split) {
while(!empty($split)) {
$count = 1;
$newArray = array();
$firstChar = $split[0];
for($i = 1; $i < count($split); $i++) {
$element = $split[$i];
if($element != $firstChar) {
$newArray[] = $element;
} else {
$count++;
}
}
$split = $newArray;
echo $firstChar . " = " . $count . "\n";
}
}
如您所见,此getCount(…)函数将需要遍历数组中的数据几乎是数组中元素的多少倍。这样就完成了任务,但是成本与阵列的大小成指数比例。让我们用字典简化一下吧?
<?php
$string = "Hello World!";
$split = str_split($string);
getCountDictionary($split);
function getCountDictionary($split) {
$dict = [];
foreach($split as $char) {
if (!isset($dict[$char])) {
$dict[$char] = 1;
} else {
$dict[$char]++;
}
}
print_r($dict);
}
非常好,现在代码更清晰,更有效。使用这种新方法,由于在字典中的访问和插入操作的复杂度为O(1),因此在处理期间仅遍历数组一次。
完整说明: http://www.jazzcoding.com/2019/02/26/why-i-like-dictionaries-so-much/
答案 2 :(得分:0)
常规array
可以用作字典数据结构。通常,它具有多种用途:数组,列表(向量),哈希表,字典,集合,堆栈,队列等。
$names = [
'bob' => 27,
'billy' => 43,
'sam' => 76,
];
$names['bob'];
由于设计广泛,因此无法获得特定数据结构的全部好处。您可以通过扩展ArrayObject
来实现自己的字典,也可以使用SplObjectStorage
类,它是地图(字典)实现,允许将对象分配为键。
答案 3 :(得分:0)
PHP中的关联数组实际上被视为字典。
PHP中的数组实际上是有序映射。映射是一种将值与键相关联的类型。可以将其视为数组,列表(向量),哈希表(地图的实现),字典,集合,堆栈,队列,甚至更多。
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
// Using the short array syntax
$array = [
"foo" => "bar",
"bar" => "foo",
];
?>
数组与字典的区别在于数组既有索引又有键。字典只有键,没有索引。
答案 4 :(得分:-1)
不,php中没有字典。您拥有的最接近的东西是一个数组。但是,数组与字典不同,因为数组既有索引又有键。字典只有键,没有索引。那是什么意思?
$array = array(
"foo" => "bar",
"bar" => "foo"
);
上面的数组允许以下行,但如果是字典,则会出现错误。
print $myarray[0]
Python同时具有数组和字典。也许您来自python背景