PHP では、配列は非常に一般的なデータ構造であり、その中でも 2 次元配列がさらに一般的に使用されます。ただし、2 次元配列を使用する場合、その中の要素を削除する必要がある場合があり、このときは値による要素の削除を考慮する必要があります。この記事では、PHP で 2 次元配列から値によって要素を削除する方法を紹介します。
1. foreach ループを使用して要素を削除する
2 次元配列内の値によって要素を削除する最も簡単な方法は、foreach ループを使用して配列を走査し、それぞれの要素が配列内の要素は、削除する値と等しいです。等しい場合は、要素を削除します。コードは次のとおりです。
$arr = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), ); foreach ($arr as $k => $v) { if ($v['name'] == '李四') { unset($arr[$k]); } }
上記のコードでは、最初に 2 次元配列 $arr
を定義し、次に foreach ループを使用して配列を走査して「名前」を決定します。 " 配列内の各要素の "キーが "John Doe" に等しいかどうか、等しい場合は、unset() 関数を使用して配列から要素を削除します。最終的な配列には要素「John Doe」は含まれません。
unset() 関数を使用して要素を削除する場合は、キー名として $v の代わりに $k を使用する必要があることに注意してください。そうしないとエラーが発生します。
2. array_filter 関数を使用して要素を削除する
2 次元配列内の要素を値によって削除するもう 1 つの方法は、要素ごとにコールバック関数を使用できる array_filter 関数を使用することです。要素をフィルタリングし、フィルタリングされた要素を含まない新しい配列を返します。コードは次のとおりです:
$arr = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), ); $arr = array_filter($arr, function($v) { return $v['name'] != '李四'; });
上記のコードでは、コールバック関数を 2 番目のパラメーターとして array_filter 関数に渡します。コールバック関数は、配列内の各要素をパラメーターとして受け取り、ブール値を返します。 true を返す場合は、要素が新しい配列に保持されることを意味し、false を返す場合は、要素が新しい配列から削除されることを意味します。
上記のコードでは、無名関数をコールバック関数として使用して、各要素の "name" キーが "李思" に等しいかどうかを判断します。そうでない場合は、要素が一致することを示す true を返します。それ以外の場合は、要素が新しい配列から削除されることを示す false が返されます。
array_filter 関数は新しい配列を返すため、指定された要素が削除された最終的な配列を取得するには、返された配列を元の配列に保存する必要があることに注意してください。
3. array_search 関数を使用して要素を削除する
2 次元配列内の要素を値によって削除するもう 1 つの方法は、array_search 関数を使用することです。配列内の指定された値を取得し、そのキー名を返します。コードは次のとおりです:
$arr = array( array('name' => '张三', 'age' => 18), array('name' => '李四', 'age' => 20), array('name' => '王五', 'age' => 22), ); $key = array_search('李四', array_column($arr, 'name')); if ($key !== false) { unset($arr[$key]); }
上記のコードでは、array_search 関数を使用して、配列内の '李思' のキーを見つけます。この関数は 2 つのパラメータを受け取ります。最初のパラメータは、次の値です。最初のパラメータは検索する配列です。上記のコードでは、2 次元配列を列ごとに 1 次元配列に抽出し、1 次元配列内で「李思」というキー名を検索します。キー名が見つかったら、 unset() 関数を使用して、キーに対応する要素の設定を解除します。
array_search 関数は検索結果のキー名を返しますが、検索に失敗した場合は false を返します。 !== 演算子を使用して、戻り値が false かどうかを確認する必要があります。そうでない場合は、検索が成功し、指定された要素を削除できることを意味します。そうでない場合は、指定された要素が見つかりません。
概要
2 次元配列要素を値によって削除するには多くの方法があります。上記では 3 つの一般的な方法を紹介します:
foreach ループを使用して配列を走査し、 each 要素の値が削除する値と等しいかどうか。等しい場合は、unset() 関数を使用して要素を削除します。
array_filter 関数を使用して配列をフィルタリングし、コールバック関数を使用して各要素を新しい配列に保持する必要があるかどうかを判断します。
array_search 関数を使用して配列内で指定された値を持つキーを検索し、unset() 関数を使用してキーに対応する要素を削除します。
実際の開発では、特定のニーズに応じてさまざまな方法を選択して配列要素を削除し、最適なパフォーマンスと効率を実現できます。
以上がPHPの二次元配列で値によって要素を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。