PHPでは、 array_map()とarray_diff_uassoc()は、さまざまなシナリオで配列を処理および比較するのに役立つ2つの非常に便利な関数です。この記事では、最初にarray_map()を使用してarrayを変換する方法を紹介し、次に比較のためにarray_diff_uassoc()を使用し、具体的な例を示します。
array_map()関数は、コールバック関数を介して配列の各要素を変換できます。基本的な構文は次のとおりです。
array_map(callable $callback, array $array1, array ...$arrays);
$ callback :配列要素を処理するために使用されるコールバック関数。
$ array1、... $ arrays :1つ以上の入力配列。
array_map()は、各要素が$ callback関数によって処理される値である新しい配列を返します。
array_diff_uassoc()関数は、2つ以上の配列を比較するために使用され、最初の配列の要素を他の配列と比較してキー名も値も返します。通常のarray_diff()とは異なり、 array_diff_uassoc()を使用すると、キー名を比較するカスタム比較関数を提供できます。
基本的な構文は次のとおりです。
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func);
$ array1 :比較される最初の配列。
$ array2 :比較する2番目の配列。
$ key_compare_func :配列キー名を比較するために使用されるコールバック関数。
次に、 Array_map()を使用してArrayの値を変換する方法を確認し、比較のためにarray_diff_uassoc()を使用する方法を見てみましょう。
2つのセットの製品の価格と名前を表す2つの配列があるとします。
$products1 = [
101 => "Apple",
102 => "Banana",
103 => "Orange"
];
$products2 = [
101 => "Apple",
102 => "Grapes",
104 => "Mango"
];
// 価格
$prices1 = [
101 => 3,
102 => 2,
103 => 1
];
$prices2 = [
101 => 3,
102 => 2.5,
104 => 1.5
];
製品名を大文字に変換し、 Array_diff_uassoc()を使用して、2つの価格アレイの異なる価格と同じキー名と要素を比較するとします。
// 最初に製品名を大文字に変換します
$products1 = array_map('strtoupper', $products1);
$products2 = array_map('strtoupper', $products2);
// 使用 array_diff_uassoc 比较価格数组(キー名は同じです,価格不同)
$price_diff = array_diff_uassoc($prices1, $prices2, function ($key1, $key2) {
return $key1 - $key2;
});
print_r($price_diff);
array_map( 'strtoupper'、$ products1)およびarray_map( 'strtoupper'、$ products2)を使用して、製品名を大文字に変換します。このようにして、名前の比較が上限と小文字の影響を受けないようにすることができます。
array_diff_uassoc()は、価格アレイを比較するために使用されます。キー名( $ key1- $ key2 )を比較するためのシンプルなコールバック関数を提供します。 2つの配列のキー名が同じであるが、対応する価格が異なる場合、 array_diff_uassoc()はこれらの要素を返します。
上記のコードを実行すると、出力が取得されます。
Array
(
[102] => 2
[104] => 1.5
)
この例では、製品ID 102と104の価格は異なるため、返品されます。
要約します
この記事では、PHPでarray_map()およびarray_diff_uassoc()関数を使用する方法について説明します。最初にarray_map()を使用して配列内の要素を変換し、次にArray_diff_uassoc()を介して2つの配列の異なるキー名と対応する値と要素を比較します。このようにして、さまざまなニーズに合わせて配列を柔軟に処理および比較できます。
尾と物品のコンテンツの間の線を分割します