毎日のPHP開発では、特にAPIの処理がデータまたは構成テンプレートを返す場合、固定構造JSONデータを構築する必要があることがよくあります。各キーを手動で埋めることに悩まされたことがあるなら、 array_fill_keys関数はあなたにとって良いヘルパーになります。
array_fill_keysは、phpが提供する組み込み関数です。その機能は、指定されたキー名配列とデフォルト値を使用して、完全な連想配列を迅速に生成することです。
構文は次のとおりです。
array_fill_keys(array $keys, mixed $value): array
$キー:キーとして使用する必要がある配列。
$値:すべてのキーに割り当てられた初期値。
この機能は、テンプレートの初期化、プレースホルダーデータ構築、その他のシナリオでの使用に非常に適しています。
フィールドID 、名前、ステータス、 URLを含む標準化されたJSON応答を返す必要があるシナリオを想像してください。これらのフィールドには、初期化時にデフォルト値(null、空の文字列など)が必要です。
伝統的な執筆方法は次のようになるかもしれません:
$template = [
'id' => null,
'name' => null,
'status' => null,
'url' => null
];
フィールドが多すぎると、この方法は反復的で面倒になります。
array_fill_keysを使用して、これを書くことができます:
$fields = ['id', 'name', 'status', 'url'];
$template = array_fill_keys($fields, null);
これにより、 NULLのすべての値を持つ一連のテンプレートがすぐに取得され、効率と読みやすさが大幅に向上します。
このようなデータテンプレートのセットを出力し、JSON文字列に変換してフロントエンドに戻す必要があるとします。
$fields = ['id', 'name', 'status', 'url'];
$template = array_fill_keys($fields, null);
// ここに私たちがデモンストレーションです,いくつかの値を入力します
$template['id'] = 101;
$template['name'] = 'テスト項目';
$template['status'] = 'active';
$template['url'] = 'https://m66.net/api/project/101';
echo json_encode($template, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
出力の結果は次のとおりです。
{
"id": 101,
"name": "テスト項目",
"status": "active",
"url": "https://m66.net/api/project/101"
}
このようにして、JSON構造全体のテンプレートは非常に簡潔な方法で構築でき、必要に応じてフィールド値を動的に置き換えることができます。
たとえば、ページングデータをシミュレートするために、複数のデータ項目を一度に作成する必要がある場合は、ループを組み合わせて生成できます。
$fields = ['id', 'name', 'status', 'url'];
$list = [];
for ($i = 1; $i <= 5; $i++) {
$item = array_fill_keys($fields, null);
$item['id'] = $i;
$item['name'] = 'プロジェクト ' . $i;
$item['status'] = 'active';
$item['url'] = "https://m66.net/api/project/{$i}";
$list[] = $item;
}
echo json_encode($list, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
出力は、それぞれ同じ構造を持つ5つのエントリを含むJSONアレイで、シミュレートされたデータまたはフロントエンドインターフェイスとして出力に最適です。
array_fill_keysは、シンプルだが非常に実用的な機能であり、特に統一された構造を持つテンプレートアレイを構築するのに適しています。単一のオブジェクトであろうと配列リストであろうと、JSONでそれを使用すると、コードの読みやすさと保守性が大幅に向上する可能性があります。
次回構造化データを初期化する必要がある場合は、この小さなツール機能を使用してPHP開発を容易にすることを検討することもできます。