天儿真好
在严格模式下,有没有办法通过值而不是键来搜索Map?
说我有地图:
$temp = Map{'melon', 'apple'};
我如何通过价值进行搜索?
答案 0 :(得分:1)
首先,示例中的Map不是有效的Map。 Hack中的地图是键值对,您只提供了键。我认为这是一个错字,你打算给出的例子是
RewriteCond %{HTTP_USER_AGENT} "HTC One M8" [nocase]
RewriteRule ^.*$ – [forbidden,last]
要在Hack中搜索地图,您可以在PHP中执行相同的操作:在O(n)扫描中迭代它。这是一个使用Hack泛型编写的示例函数,因此无论输入Map如何,它都将具有正确的类型。
$temp = Map {'fruit' => 'apple', 'veg' => 'carrot'};
然而,最后一个问题回复给你:你为什么要搜索这样的地图?映射意味着对给定键进行快速值查找,以及对所有键/值对进行快速迭代。它们不设计用于这样的值查找 - 这就是为什么它需要一个O(n)循环,它应该引发警告信号,表明你正在做的事情可能不是最好的。您可能需要考虑使用更合适的数据结构:如果您经常执行此操作,或者使用Set或Vector依赖,可能会构建逆映射。