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>
ログイン後にコピー
です
------解決策----------------------
isset は値がリストにあるかどうかを決定します
それがキーであるか値であるか、またはデータがどのように構成されているかは関係ありません
要するに、リスト内でクエリを実行しており、最悪のシナリオはリストの最後の要素を取得することです
実際、isset は in_array と同じです
誰かが私の同様の質問 (in_array を使用) で疑問を提起しました
アルゴリズムに関する限り、それは非常に簡単です。 PHP の内部で実装されているという意味ではありません。カウントされません
ハッシュ テーブルのパフォーマンスは線形テーブルよりも優れていますが、時間計算量は依然として同じです
もちろん、これが除外されるわけではありません。高校で受けた教育が私の理論的知識の理解に影響を与えているということ