有时候我在PHP中做了很多事情。 大海捞针。
$names = [
'Mike',
'John',
'Dave',
'Tony'
];
$gotDave = in_array('Dave', $names);
in_array 的运行时间为 O(n),其中 n 是元素的数量。
我经常将查找数据结构设置为如下所示。
$names = [
'Mike' => true,
'John' => true,
'Dave' => true,
'Tony' => true
];
$gotDave = isset($names['Dave']);
运行时是 O(1),因为在 php 中,关联数组是一个哈希映射。
一些问题:
- 我应该这样做吗? 这是好的做法吗?
- 右舵骑行是否有更好的价值
是的,这是一个很好的解决方案。事实上,这就是大多数编程语言的核心库中实现Sets的方式 - 在我的头顶上,Python,Ruby和Java都是这样做的。Go 语言不提供 Set,只是告诉你做你已经做过的事情。
我想不出任何理由使用真正的"true"以外的任何值。这是有道理的。
您可以使用
array_key_exists()
来检查数组的键,这与检查值in_array
不同
在这种情况下,您将不得不使用array_key_exists()
而不是isset()