PHPで配列を処理する場合、関数呼び出しの順序は、結果に重大な影響を与えることがよくあります。 array_change_key_case()およびarray_unique()は、配列操作に一般的に使用される2つの関数ですが、これら2つの関数を一緒に使用すると、その順序が結果に影響すると思いましたか?この記事では、それらの使用法を理解し、順序で注文することができます。
array_change_key_case(array $ array、int $ case = case_lower):array
この関数は、配列のキー名を小文字( case_lower )または大文字( case_upper )に均一に変換するために使用されます。これは、一貫性のないキー名(ユーザーが入力したパラメーターなど)を扱う場合、非常に便利なツールです。
$data = [
"Name" => "Alice",
"AGE" => 25,
"Gender" => "Female"
];
$result = array_change_key_case($data, CASE_LOWER);
// 結果:['name' => 'Alice', 'age' => 25, 'gender' => 'Female']
array_unique(array $ array、int $ flags = sort_string):array
この関数は、アレイから重複した値を削除するために使用され、表示される最初のキー値ペアのみを保持します。キー名ではなく、「値」にのみ作用することに注意する必要があります。
$data = ["apple", "banana", "Apple", "banana"];
$result = array_unique($data);
// デフォルトはケースに敏感です:['apple', 'banana', 'Apple']
これら2つの機能を組み合わせて、順序が異なる場合に結果がどのように変化するかを確認しましょう。
$data = [
"Name" => "Alice",
"name" => "Bob",
"AGE" => 25,
"age" => 30
];
$data = array_change_key_case($data, CASE_LOWER);
$data = array_unique($data);
print_r($data);
出力結果:
Array
(
[name] => Alice
[age] => 25
)
この場合、キー名のケースが最初に統一され、 「名前」と「名前」は同じキーとして扱われるため、後者は上書きされます。値の繰り返しはarray_unique()を使用して削除されますが、キーがすでに統一されているため、影響は大きくありません。
$data = [
"Name" => "Alice",
"name" => "Bob",
"AGE" => 25,
"age" => 30
];
$data = array_unique($data);
$data = array_change_key_case($data, CASE_LOWER);
print_r($data);
出力結果:
Array
(
[name] => Alice
[age] => 25
[age_1] => 30
)
このようにして、一意の値を持つキー価値ペアが最初に保持され、次にキー名が統一されます。その結果、 「年齢」や「年齢」などの重要な名前の競合が保存されますが、主要な名前は小文字に変換された後に繰り返されます。 PHPは、アレイでこの競合を自動的に処理します( Age_1などの一時的なキー名でのタグ付けなど)。
データを処理する意図に依存します。
キー名の一貫性にもっと注意を払う場合(たとえば、キー名を使用して値を取得するため)、最初にarray_change_key_case()を使用する必要があります。
重複した値の削除にもっと焦点を当て、キー名があなたにとって重要ではない場合、注文はあまり影響を与えませんが、より多くの元のデータ構造を保持するために最初にarray_unique()に推奨されます。
一貫性のないケースキーと複製値を持つフォームからユーザーがサビされたデータを受け取ったとしたら、それらを統一してAPIインターフェイスhttps://m66.net/api/submit.phpに送信するとします。