【发布时间】:2012-03-12 11:07:20
【问题描述】:
我想在 PHP 中创建一个关联数组,其中键是一对字符串。
起初我正在考虑将字符串与中间的某种唯一分隔符连接起来,然后稍后将它们分开,但这似乎是使用一对的一种hacky解决方法。
考虑以下代码:
$andrew = array('Andrew', 'Rasmussen');
$john = array('John', 'Smith');
$container[$andrew] = 15;
$container[$john] = 12;
$pair = array('Andrew', 'Rasmussen');
if (array_key_exists($pair, $container)) {
echo 'true';
} else {
echo 'false';
}
很明显,这段代码不起作用,因为您不能在 PHP 中使用数组作为数组中的键。有没有一种好的方法来做这样的事情而不连接然后再解析字符串?
编辑
我想这样做是有原因的。我有一个array(key=string1,value=array(key=string2,value=occurrences)),我试图找到字符串对的前 5 个(就出现次数而言)。所以我基本上试图将其展平为一维数组,然后对其进行排序,以便我可以轻松地获得前 5 个。但要做到这一点,我需要能够在排序后单独提取字符串,这可以使用上面解释的除法器算法来完成,但这不是可取的,这就是我要求替代方案的原因。
【问题讨论】:
-
可能吗?是的,但它似乎比仅仅使用串联和
explode要做更多的工作。 -
@paxdiablo 您对 concat + explode 与 serialize() + unserialize() 数组有何看法?
-
我怀疑序列化会更好,因为您不需要发明一些任意分隔符。
标签: php c++ associative-array std-pair