PHPでは、アレイは非常に一般的で重要なデータ構造です。プログラミングプロセス中に、多くの場合、配列の検索、フィルタリング、変更、およびその他の操作が必要です。 PHPは、 Array_fill_keysとarray_keysが2つの強力な関数であるリッチな配列処理機能を提供します。これら2つの機能を巧みに組み合わせることで、配列操作を最適化し、コード効率を向上させることができます。
array_keys()
array_keys()は、配列内のすべてのキー名の配列を返すために使用されます。通常、この関数は、配列内の特定のキーの値を取得する必要がある場合に非常に便利です。
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$keys = array_keys($array); // 戻る ['a', 'b', 'c']
array_fill_keys()
array_fill_keys()は、指定されたキー名を特定の値で入力するために使用されます。この関数は、渡されたキー名アレイに基づいて新しい配列を生成し、これらのキー名に対応するすべての値を指定された値で埋めます。
$keys = ['a', 'b', 'c'];
$filledArray = array_fill_keys($keys, 0); // 戻る ['a' => 0, 'b' => 0, 'c' => 0]
これら2つの機能の組み合わせは、配列に特定のキー名が含まれているかどうかを判断したり、これらのキー名にデフォルト値を割り当てるなど、いくつかの一般的な配列操作を効率的に処理するのに役立ちます。以下は、いくつかの一般的なアプリケーションシナリオです。
特定のキー名を含む配列があると仮定しますが、配列に特定のキー名が欠落しているかどうかはわかりません。これらのキー名が欠落している場合、それらのデフォルト値を設定する必要があります。現時点では、 array_fill_keysおよびarray_keysと組み合わせて実装できます。
$array = ['a' => 1, 'b' => 2];
// チェックするキー名を定義します
$requiredKeys = ['a', 'b', 'c', 'd'];
// 配列に既存のキー名を取得します
$existingKeys = array_keys($array);
// 欠落しているキー名を見つけます
$missingKeys = array_diff($requiredKeys, $existingKeys);
// 使用 array_fill_keys 欠落しているキー名のデフォルト値を設定します
$defaultValues = array_fill_keys($missingKeys, 0);
// 元の配列を、キー価値のペアが欠落しているとマージします
$finalArray = array_merge($array, $defaultValues);
print_r($finalArray);
Array
(
[a] => 1
[b] => 2
[c] => 0
[d] => 0
)
この例では、 array_keysを使用して配列内の既存のキー名を取得し、 Array_diffを使用して欠落しているキー名を見つけ、 Array_fill_keysを使用してこれらの欠落しているキー名のデフォルト値0を入力し、最後にArray_mergeを介して元のArrayと新しいキー値ペアをマージします。
複数のキーデフォルト値をアレイに動的に追加する必要がある場合があります。 Array_Keysを介して既存のキー名を抽出し、 Array_fill_keysでデフォルト値を入力すると、コードがより簡潔で効率的になります。
$existingArray = ['x' => 1, 'y' => 2];
// 新しいキー名を定義します
$newKeys = ['a', 'b', 'c'];
// 使用 array_fill_keys 新しいキー名のデフォルト値に入力します
$newValues = array_fill_keys($newKeys, 0);
// 既存の配列と新しいキー価値ペアをマージします
$finalArray = array_merge($existingArray, $newValues);
print_r($finalArray);
Array
(
[x] => 1
[y] => 2
[a] => 0
[b] => 0
[c] => 0
)
ここでは、最初にarray_fill_keysを介して新しいキー名のデフォルト値0を入力し、それを元の番号と組み合わせて最終結果を取得します。
場合によっては、URLを含む配列を処理する必要があり、これらのURLのドメイン名を均一に置き換える必要がある場合があります。 ArrayのすべてのURLドメイン名をM66.netに置き換える必要があると仮定すると、 array_mapを使用してstr_replaceで処理できます。
$urls = [
'https://www.example.com/page1',
'https://www.example.com/page2',
'https://m66.net/page3'
];
// すべてを交換します URL ドメイン名
$updatedUrls = array_map(function ($url) {
return preg_replace('/https?:\/\/(www\.)?[^\/]+/', 'https://m66.net', $url);
}, $urls);
print_r($updatedUrls);
Array
(
[0] => https://m66.net/page1
[1] => https://m66.net/page2
[2] => https://m66.net/page3
)
URLのドメイン名を正規表現に置き換えることにより、すべてのURLのドメイン名をM66.NETに簡単に置き換えることができ、バッチ交換操作を完了します。
array_fill_keysとarray_keysを巧みに組み合わせることにより、特に配列キー名を扱う場合、PHPの配列操作を最適化できます。キー名の欠落のデフォルト値を設定したり、動的に新しいキー値を追加したり、URLアレイをバッチするかにかかわらず、これらの機能の組み合わせにより、より効率的で簡潔なコードを書くことができます。実際の開発では、これらの配列関数を合理的に使用すると、コードの読みやすさと実行効率を大幅に改善できます。