为什么PHP数组(不像Python)既是list又是dict?



自从从Python迁移到PHP以来,我发现PHP中的数组'dict'同时实现了list和dict:

$numlist = 数组(1, 2, 3, 4, 5(;

$cat_and_mouse = array("tom"=>12, "jerry"=> 2(;

和令人沮丧的数组功能:

其中一些应该适用于列表,而另一些应该适用于字典。

array_chunk array_column array_combine array_count_values array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_diff array_fill_keys array_fill array_filter array_flip array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey array_intersect array_key_exists array_keys array_map array_merge_recursive array_merge array_multisort array_pad array_pop array_product array_push array_rand array_reduce array_replace_recursive array_replace array_reverse array_search array_shift......

List和HashMap在大多数语言中都有很大的不同,为什么PHP将它们混合在一起?

PHP中的数组始终是关联的,因为根据定义,PHP 数组是一个有序映射,它将值与键相关联。

事实上,如果你传播你的示例,你会发现你的第一个数组将键映射到顺序索引:

$numlist = array(1, 2, 3, 4, 5);
var_dump($numlist);

结果:

array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5

$cat_and_mouse = array("tom" => 12, "jerry" => 2);
var_dump($cat_and_mouse);

结果:

array (size=2)
'tom' => int 12
'jerry' => int 2

省略密钥只是自动为您创建密钥,从0开始。

希望这有帮助! :)

因为 PHP 是最好的编程语言... \s

2年过去了。 2年前,我从python转到PHP,10个月前,我从PHP转到Java。 非常感谢Java,一切都是如此整洁和优雅,现在我使用Spring Boot来托管我的应用程序,使用Spring Data和Hibernate来持久化我的数据,并且有Java 8流并行使用多核CPU。还有大魔君,日蚀...

我简直不敢相信我在 PHP 上浪费了 2 年。我希望我从未遇到过它。

最新更新