ゲームのステータスを維持および更新することは、ゲーム開発における重要なタスクです。多くの場合、ゲームのステータス情報には、キャラクターの健康、スコア、レベルの進捗などの複数の異なるパラメーターが含まれます。これらの状態情報は通常、初期値を必要とし、 array_fill_keys関数は、配列を初期化するときに一連のキーとそれらに対応するデフォルト値を提供するのに役立つ非常に便利なツールです。
この記事では、 array_fill_keysを使用して、初期状態を持つ一連のゲーム状態を作成し、実際のコードの例を表示する方法を検討します。
array_fill_keysは、連想配列を作成するためのPHPの関数です。 2つのパラメーターを受け入れます。
キー:配列キーを含む配列。
値:各キーの初期値。
この関数は、各キーが着信キーアレイによって提供され、すべてのキーが同じ初期値を割り当てられる新しい配列を返します。
各プレイヤーが健康、エクスペリエンス、ゴールドコインなど、初期化する必要がある複数のステータス情報を持っているシンプルなロールプレイングゲームを開発しているとします。ゲームの開始時に各プレイヤーの属性に初期値を割り当てることができることを望んでいます。
たとえば、プレーヤーの次のステータス情報を定義する場合があります。
健康(健康)
経験(経験価値)
金(金貨)
レベル(レベル)
この情報の初期値は次のとおりです。
健康:100
経験:0
ゴールドコイン:50
レベルレベル:1
array_fill_keysを使用して、この初期化プロセスを簡素化できます。
Array_fill_keysを使用して初期状態ゲーム状態配列を作成するためのPHPコードの例を次に示します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ゲーム状態を定義するキー</span></span><span>
</span><span><span class="hljs-variable">$gameKeys</span></span><span> = [</span><span><span class="hljs-string">'health'</span></span><span>, </span><span><span class="hljs-string">'experience'</span></span><span>, </span><span><span class="hljs-string">'gold'</span></span><span>, </span><span><span class="hljs-string">'level'</span></span><span>];
</span><span><span class="hljs-comment">// 各キーの初期値を定義します</span></span><span>
</span><span><span class="hljs-variable">$initialValue</span></span><span> = [
</span><span><span class="hljs-string">'health'</span></span><span> => </span><span><span class="hljs-number">100</span></span><span>,
</span><span><span class="hljs-string">'experience'</span></span><span> => </span><span><span class="hljs-number">0</span></span><span>,
</span><span><span class="hljs-string">'gold'</span></span><span> => </span><span><span class="hljs-number">50</span></span><span>,
</span><span><span class="hljs-string">'level'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>
];
</span><span><span class="hljs-comment">// 使用 array_fill_keys ゲームステータスを初期化します</span></span><span>
</span><span><span class="hljs-variable">$gameState</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span>(</span><span><span class="hljs-variable">$gameKeys</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>);
</span><span><span class="hljs-comment">// 各キーを対応する初期値に割り当てます</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$gameState</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> => </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$initialValue</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>])) {
</span><span><span class="hljs-variable">$gameState</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>] = </span><span><span class="hljs-variable">$initialValue</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>];
}
}
</span><span><span class="hljs-comment">// 出力ゲームステータスアレイ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$gameState</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[health] => </span><span><span class="hljs-number">100</span></span><span>
[experience] => </span><span><span class="hljs-number">0</span></span><span>
[gold] => </span><span><span class="hljs-number">50</span></span><span>
[level] => </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>
ステップ1 :最初に、Associative Arrayのキーとして機能するゲーム状態属性名を含む配列$ gamekeysを定義します。
ステップ2 :各州プロパティの初期値を含む連想配列$ initialValueを定義します。
ステップ3 : array_fill_keys関数を介して、すべての値がnullで配列$ gamestateを初期化し、キーは$ gamekeysアレイから届きます。
ステップ4 : foreachループを使用して、 $ gamestateアレイを繰り返し、各キーの値を$ initialValueの対応する初期値に置き換えます。
ループの使用を避けるために、各キーの初期値をarray_fill_keysに直接設定することもできます。数値( +演算子)の組み合わせを使用して、値を直接初期化する別の方法を次に示します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$gameKeys</span></span><span> = [</span><span><span class="hljs-string">'health'</span></span><span>, </span><span><span class="hljs-string">'experience'</span></span><span>, </span><span><span class="hljs-string">'gold'</span></span><span>, </span><span><span class="hljs-string">'level'</span></span><span>];
</span><span><span class="hljs-variable">$initialValue</span></span><span> = [
</span><span><span class="hljs-string">'health'</span></span><span> => </span><span><span class="hljs-number">100</span></span><span>,
</span><span><span class="hljs-string">'experience'</span></span><span> => </span><span><span class="hljs-number">0</span></span><span>,
</span><span><span class="hljs-string">'gold'</span></span><span> => </span><span><span class="hljs-number">50</span></span><span>,
</span><span><span class="hljs-string">'level'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>
];
</span><span><span class="hljs-comment">// 使用 array_fill_keys 基本的な配列を作成します,初期値とマージします</span></span><span>
</span><span><span class="hljs-variable">$gameState</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span>(</span><span><span class="hljs-variable">$gameKeys</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>) + </span><span><span class="hljs-variable">$initialValue</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$gameState</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この方法では、明示的なループを避けて、コードを組み合わせて操作することにより、コードを簡素化します。
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[health] => </span><span><span class="hljs-number">100</span></span><span>
[experience] => </span><span><span class="hljs-number">0</span></span><span>
[gold] => </span><span><span class="hljs-number">50</span></span><span>
[level] => </span><span><span class="hljs-number">1</span></span><span>
)
</span></span>
array_fill_keys関数は、PHPの非常に便利なツールであり、初期値を持つ連想配列をすばやく作成するのに役立ちます。この関数を通じて、ゲーム状態または他のシナリオのデフォルト値を持つ配列を簡単に初期化し、実際のニーズに応じてこれらの値をさらに変更できます。デフォルト値ですべてのキーを初期化する場合でも、マージ操作を使用して初期状態をさらに絞り込む場合でも、 array_fill_keysは効率的な選択です。