PHPでは、 array_fill_keys関数の関数は、配列を指定された値で埋めることであり、生成された配列は指定されたキー名を使用します。これは非常に実用的な機能です。特に、配列を初期化する必要があり、特定のキー値を使用して配列を入力する場合は非常に実用的な機能です。ただし、一部の境界ケースでは、着信キー名が空の場合、エラーが発生するか、予想される結果を満たしていません。それで、これを避ける方法は?この記事では、キー名が空であるときにarray_fill_keys関数の問題を調査し、ソリューションを提供します。
array_fill_keys関数は、2つのパラメーターを受け入れます。
キー:キー名を含む配列。
値:配列の埋めるために使用される値。
$array = array_fill_keys(['a', 'b', 'c'], 1);
print_r($array);
出力:
Array
(
[a] => 1
[b] => 1
[c] => 1
)
この例では、 array_fill_keysは、array ['a'、 'b'、 'c']の各キー名の値1に記入します。この関数は次のように機能します。指定されたキー名を使用して新しい配列を生成し、各キー名は同じ値に対応します。
null値を含むキー名の配列を渡すと、 array_fill_keys関数はキーを含まない配列を返します。より具体的には、空の文字列またはnullがキー名として配列に存在する場合、PHPはこれらのキーを自動的にスキップします。これが例です:
$array = array_fill_keys(['a', '', 'c'], 1);
print_r($array);
出力:
Array
(
[a] => 1
[c] => 1
)
空の文字列が無視されていることがわかります。エラーは直接スローされませんが、これは特にキー名配列にnull値が含まれている場合、予想される動作ではありません。
実際の開発では、 Array_fill_keysを呼び出す前に、空のキー名を確認し、適切に処理する必要があります。ここにいくつかの一般的な解決策があります:
array_fill_keysを呼び出す前に、 array_filter関数を介して空のキー名をフィルタリングできます。 array_filterは、 null 、空の文字列、またはfalseの値で配列内のすべての要素を削除します。
$keys = ['a', '', 'c'];
$filtered_keys = array_filter($keys, function($key) {
return !empty($key);
});
$array = array_fill_keys($filtered_keys, 1);
print_r($array);
出力:
Array
(
[a] => 1
[c] => 1
)
このようにして、キー名アレイにarray_fill_keysに渡された空のキーがないことを確認できます。したがって、不必要なnull値を回避できます。
NULLキー名に遭遇したときに対応するキーを生成したい場合は、null値をフィルタリングする前にデフォルト値を与えることができます。たとえば、空の文字列「default_key」に置き換えることができます。
$keys = ['a', '', 'c'];
$keys = array_map(function($key) {
return $key === '' ? 'default_key' : $key;
}, $keys);
$array = array_fill_keys($keys, 1);
print_r($array);
出力:
Array
(
[a] => 1
[default_key] => 1
[c] => 1
)
このように、元の配列にnullキー名がある場合でも、nullキーは指定されたデフォルトキー名に置き換えられ、データの損失を回避します。
nullキー名が合法であるが、最終結果のnullキーを何らかの方法で表示する場合は、 array_mergeを介してnullキー名のデータをマージできます。例えば:
$keys = ['a', '', 'c'];
$values = array_fill_keys($keys, 1);
$values = array_merge([], $values); // 新しい配列にマージします
print_r($values);
これにより、空のキー名が遭遇した場合でも、配列の構造が処理されていることが保証されます。
array_fill_keysは非常に便利なPHP関数ですが、実際のアプリケーションでは、着信キー名が空であるかどうかに特に注意する必要があります。空白のキー名は、生成された配列が予想されるキーを見逃し、プログラムのロジックに影響を与える可能性があります。したがって、 array_fill_keysを呼び出す前に、キー名が適切にチェックまたは前処理されていることを確認することが非常に重要です。
空のキーをフィルタリングしたり、空のキーやその他のメソッドを交換したりすることで、空のキー名によって引き起こされる潜在的な問題を効果的に回避し、コードを堅牢に保つことができます。