0

我想在 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 个。但要做到这一点,我需要能够在排序后单独提取字符串,这可以使用上面解释的除法器算法来完成,但这不是可取的,这就是我要求替代方案的原因。

4

2 回答 2

2

怎么serialize弄钥匙?

$pair = array('Andrew', 'Rasmussen');
if (array_key_exists( serialize( $pair), $container)) {
    echo 'true';
} else {
    echo 'false';
}
于 2012-02-22T05:25:54.600 回答
1

您可以使用多维数组($container["Andrew"]["Rasmussen"]例如使用它)。

此外,您可以在自定义 ArrayIndexedByPairs 类中封装所有“hacking”(二维数组或字符串连接),如下所示:

interface IArrayIndexedByPairs {
    public Add($key1, $key2, $value);
    public Contains($key1, $key2);
    public Get($key1, $key2);
}
于 2012-02-22T05:19:13.530 回答