0

キーが文字列のペアである連想配列をPHPで作成したいと思います。

最初は、文字列を途中で何らかの独自の仕切りで連結し、後でそれらを分離することを検討していましたが、これはペアを使用するためのハッキーな回避策のようです。

次のコードを検討してください。

$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 (出現数) を見つけようとしています。だから私は基本的にこれを 1 次元配列にフラット化し、それを並べ替えて上位 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 クラスで、すべての「ハッキング」(2 次元配列または文字列連結) をカプセル化できます。

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