PHP では、in_array() 関数の使用、array_search() 関数の使用など、さまざまなメソッドを使用して配列内の要素をクエリできます。ただし、2 次元配列内の要素をクエリする必要がある場合、これらの方法はあまり効果的ではありません。この記事では、PHP で 2 次元配列をクエリし、必要な要素を返す方法を紹介します。
まず、単純な 2 次元配列を見てみましょう:
$students = array( array('name' => 'Tom', 'age' => 20, 'score' => 90), array('name' => 'Jack', 'age' => 22, 'score' => 85), array('name' => 'Mary', 'age' => 21, 'score' => 92), );
学生の成績をクエリしたいとします。foreach を使用して配列をループし、条件ステートメントを使用できます。たとえば、
$wantedStudent = 'Jack'; foreach ($students as $student) { if ($student['name'] == $wantedStudent) { echo $wantedStudent . '的成绩是:' . $student['score']; break; } }
上のコードは次のように出力します:
Jack的成绩是:85
ただし、クエリする必要がある学生が多数いる場合、このメソッドは非常に困難になります。面倒。したがって、これを関数にカプセル化して使用できます。
function searchArray($array, $key, $value) { foreach ($array as $item) { if ($item[$key] == $value) { return $item; } } return null; }
上記の関数は、配列、キー名、クエリ対象のキー値の 3 つのパラメーターを受け取ります。配列を反復処理し、一致するものが見つかった場合はその項目を返し、そうでない場合は null を返します。
関数は次のように使用できます:
$wantedStudent = 'Mary'; $student = searchArray($students, 'name', $wantedStudent); if ($student) { echo $wantedStudent . '的成绩是:' . $student['score']; }
上記のコードは前の例と同等で、出力は次のようになります:
Mary的成绩是:92
ただし、配列が非常に大きい場合は、配列全体を反復処理すると、パフォーマンスに影響します。したがって、配列関数 array_filter() を使用できます。この関数は、配列とコールバック関数を受け取り、コールバック関数の条件を満たす配列要素を含む新しい配列を返します。
次は、array_filter() を使用して 2 次元配列をクエリする例です。
function searchArray($array, $key, $value) { $filtered = array_filter($array, function($item) use ($key, $value) { return $item[$key] == $value; }); return count($filtered) ? array_values($filtered)[0] : null; }
上記の関数の関数は前の関数と同じですが、array_filter( ) 配列要素をフィルタリングして、パフォーマンスを向上させます。
これまで、PHP で 2 次元配列をクエリし、必要な要素を返す方法を学習しました。データが数百個以上ある場合は、array_filter() と匿名関数を使用して配列要素クエリを実装することをお勧めします。
以上がPHPクエリは2次元配列を返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。