ホームページ  >  記事  >  バックエンド開発  >  PHPが双方向インデックスクエリを実装するにはどのようなデータ構造が必要ですか?

PHPが双方向インデックスクエリを実装するにはどのようなデータ構造が必要ですか?

WBOY
WBOYオリジナル
2016-08-10 09:07:161210ブラウズ

どう表現すればいいのかわかりません。要するに、要件は C# の linq に似ています。
次の配列があるとします。 リーリー

$test['a'] を通じて 'a1' をクエリできるようになりましたが、'a1' を通じて 2 つの要素 'a' と 'b' をクエリしたいのですが、これを php で実装するにはどうすればよいですか?

補足: foreach を使用して実装するという人もいますが、私の配列は後の段階で非常に大きくなり、場合によっては数千、数万にも達する可能性があります。foreach を使用するのは明らかに効率的ではありません。

既存のソリューションは、各配列要素のキー値が異なる状況、つまり 1 対 1 のマッピング状況のみを解決できます。最初の状況は array_search で、2 番目の状況は最初に array_flip で、次に従来の $ です。テスト['a1']検索。

返信内容:

どう表現すればいいのかわかりません。要するに、要件は C# の linq に似ています。

次の配列があるとします。 リーリー

$test['a'] を通じて 'a1' をクエリできるようになりましたが、'a1' を通じて 2 つの要素 'a' と 'b' をクエリしたいのですが、これを php で実装するにはどうすればよいですか? 補足: foreach を使用して実装するという人もいますが、私の配列は後の段階で非常に大きくなり、場合によっては数千、数万にも達する可能性があります。foreach を使用するのは明らかに効率的ではありません。

既存のソリューションは、各配列要素のキー値が異なる状況、つまり 1 対 1 のマッピング状況のみを解決できます。最初の状況は array_search で、2 番目の状況は最初に array_flip で、次に従来の $ です。テスト['a1']検索。

マニュアルの

array_search があなたのニーズを解決します。

リーリー

グループの専門家に問題の解決を依頼してください。array_keys で問題ありません。

リーリー

コードを入力するだけです! ~

良い方法はないので、2つの配列でやってみましょう

ご招待ありがとうございます。配列構造のため、配列の値が一意であることを確認する必要があります

リーリー

重複した値を削除した後、配列を反転します。key肯定是唯一的, 但可能不同的key对应相同的值, 所以我所知道的, 要想实现c#linq リーリー 次のように、

構造を元の配列に反転します

リーリー

これで、

key当做值, 原数组的value 作为keyのようなlinq関数を実装できます。 リーリー

欠点があればご指摘ください、、、c#


値に基づいてキーをクエリするだけではありませんか? array_keys で解決できます:

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。