ホームページ > バックエンド開発 > PHPチュートリアル > 専門家にアルゴリズムによる解決策を求める

専門家にアルゴリズムによる解決策を求める

WBOY
リリース: 2016-06-13 13:38:33
オリジナル
942 人が閲覧しました

2次元配列が2つあります
PHPコード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$a=array(
    array('id'=>'1','name'=>'a','url'=>'c'),
    array('id'=>'2','name'=>'aa','url'=>'cc'),
        array('id'=>'3','name'=>'aaa','url'=>'ccc')
);

$b=array(
    array('name'=>'aa','url'=>'cc'),
    array('name'=>'a','url'=>'c')
);

ログイン後にコピー

array('id'=>'3','nameの取得方法)を教えてください。 '=> ;'aaa','url'=>'ccc')?これは、ID を除く 2 つの配列内の項目を比較する場合、配列 a の値が配列 b に存在しない場合は、ネストされた foreach を使用したくないことを意味します。したがって、効率が問題になります。アドバイスをください。アイデアのある友人がアドバイスをくれることを願っています。

-----解決策---------
PHP コード
$t=配列();
foreach($b として $vl)
        $t[$vl['name'].$vl['url']]=$vl;

foreach($a as $k=>$v)
     if(!$t[$v['name'].$v['url']]) unset($a[$k]);
     
print_r($a);
<br><font color="#e78608">------解決策---------</font><br>
ログイン後にコピー
話し合う

アルゴリズム時間の考慮
if(!$t[$v['name'].$v['url']]) はクエリ配列のキーであり、クエリ リストでもあります、複雑です次数はn
です
------解決策----------------------
isset は値がリストにあるかどうかを決定します
それがキーであるか値であるか、またはデータがどのように構成されているかは関係ありません
要するに、リスト内でクエリを実行しており、最悪のシナリオはリストの最後の要素を取得することです

実際、isset は in_array と同じです

誰かが私の同様の質問 (in_array を使用) で疑問を提起しました
アルゴリズムに関する限り、それは非常に簡単です。 PHP の内部で実装されているという意味ではありません。カウントされません

ハッシュ テーブルのパフォーマンスは線形テーブルよりも優れていますが、時間計算量は依然として同じです
もちろん、これが除外されるわけではありません。高校で受けた教育が私の理論的知識の理解に影響を与えているということ
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート