PHPで2次元配列内の要素の位置をクエリする方法

PHPz
リリース: 2023-04-19 14:01:14
オリジナル
927 人が閲覧しました

PHP では、2 次元配列内の特定の要素の位置を見つける必要がある場合があります。このプロセスは非常に簡単ですが、正しい方法を知らないと非常に難しくなる可能性もあります。この記事では、PHP で 2 次元配列内の要素の位置をクエリするいくつかの方法を紹介し、この問題の解決に役立ちます。

個々の要素の位置のクエリ

2 次元配列内の特定の要素の位置をクエリする場合は、2 レベルの for ループ ステートメントを使用できます。まず各サブ配列をループし、次に各サブ配列内のターゲット要素を見つけます。ターゲット要素が見つかった場合は、その位置を返すことができます。

次は、for ループ ステートメントを使用して 2 次元配列内の要素の位置をクエリするサンプル コードです。

function find_element($arr, $target) {
    for ($i = 0; $i < count($arr); $i++) {
        for ($j = 0; $j < count($arr[$i]); $j++) {
            if ($arr[$i][$j] == $target) {
                return array($i, $j);
            }
        }
    }
}
ログイン後にコピー

この関数では、最初のパラメーター $arr は 2 つの要素を表します。探している -次元配列 、2 番目のパラメーター $target は、検索したいターゲット要素を表します。 2 つの for ループ ステートメントを使用して配列を走査し、ターゲット要素が見つかった場合は、その位置が返されます。

たとえば、次のような 2 次元配列があるとします。

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次のコードを使用して、数字 5 の位置を見つけることができます。

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";
ログイン後にコピー
ログイン後にコピー

This出力は次のようになります: 5 の位置は (1, 1) です。

array_search() 関数を使用して位置をクエリする

for ループを手動で作成することに加えて、PHP の array_search() 関数を使用して、オブジェクト内の特定の要素の位置をクエリすることもできます。二次元配列。 array_search() 関数は 1 次元配列内の要素のみを検索できますが、2 次元配列内の要素を直接検索することはできません。したがって、2 次元配列を 1 次元配列に「平坦化」してから、ターゲット要素の位置を見つける必要があります。次に、いくつかの数学的演算を使用して、1 次元配列の位置を 2 次元配列の位置に変換できます。

以下は、2 次元配列を 1 次元配列に「平坦化」し、array_search() 関数を使用してターゲット要素を見つけるコード例です。 , まず 2 次元配列を 1 次元配列に変換します。配列は 1 次元配列 $ flatten に「フラット化」されます。次に、array_search() 関数を使用して、$ flatten 内のターゲット要素の場所を見つけます。ターゲット要素が見つかった場合は、いくつかの数学的演算を使用して、1 次元の位置を 2 次元の位置に変換できます。

たとえば、次のような 2 次元配列があるとします。

function find_element($arr, $target) {
    $flatten = array();
    foreach ($arr as $subarr) {
        $flatten = array_merge($flatten, $subarr);
    }
    $key = array_search($target, $flatten);
    if ($key !== false) {
        $col = $key % count($arr[0]);
        $row = floor($key / count($arr[0]));
        return array($row, $col);
    }
}
ログイン後にコピー

次のコードを使用して、数字 5 の位置を見つけることができます。

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

This出力は次のようになります: 5 の位置は (1, 1) です。

array_filter() 関数を使用して位置をクエリする

array_search() 関数と同様に、array_filter() 関数といくつかの数学演算を使用して、特定の位置をクエリすることもできます。 2次元配列の要素。 array_filter() 関数を使用すると、配列を手動でループして「平坦化」する問題を回避できます。

以下は、array_filter() 関数と数学演算を使用して 2 次元配列内の特定の要素の位置をクエリするサンプル コードです。

$target = 5;
$position = find_element($arr, $target);
echo "The position of $target is ({$position[0]}, {$position[1]})";
ログイン後にコピー
ログイン後にコピー

この関数では、 array_filter() 関数を使用して 2 次元配列をフィルタリングし、ターゲット要素を含む部分配列のみを保持します。次に、key() 関数と array_search() 関数を使用して、ターゲット要素の場所を見つけることができます。

たとえば、次のような 2 次元配列があるとします。

function find_element($arr, $target) {
    $result = array_filter($arr, function ($subarr) use ($target) {
        return in_array($target, $subarr);
    });
    if (!empty($result)) {
        $row = key($result);
        $col = array_search($target, $arr[$row]);
        return array($row, $col);
    }
}
ログイン後にコピー

次のコードを使用して、数字 5 の位置を見つけることができます。

$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

This出力は次のようになります: 5 の位置は (1, 1) です。

概要

PHP で 2 次元配列内の位置をクエリするのは難しい場合がありますが、この問題を解決するために使用できる方法がいくつかあります。 for ループを手動で作成するか、array_search() 関数を使用するか、array_filter() 関数を使用するかに関係なく、1 次元の位置を 2 次元の位置に変換するには、何らかの計算が必要です。この記事が、PHP で 2D 配列内の位置をクエリする方法をより深く理解するのに役立つことを願っています。

以上がPHPで2次元配列内の要素の位置をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート