PHPでは、 array_map()関数は、array内の各要素にコールバック関数を適用し、コールバック関数によって処理された要素を含む新しい配列を返す非常に便利な関数です。これにより、数字の配列、文字列の配列、さらにはミキシング配列を扱う場合、非常に効率的で便利になります。この記事では、 array_map()関数を使用して数値配列内の要素を変換する方法を詳細に分析します。
<span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ callback :配列の各要素に適用されるコールバック関数。このコールバック関数は、匿名関数、組み込み関数、またはユーザー定義関数にすることができます。
$配列:処理される最初の配列。これは、あらゆるタイプの配列にすることができます。
$配列:パラメーターとして複数の配列がある場合、それらの要素はコールバック関数に1つずつ渡されます。
いくつかの整数を含む配列があり、 array_map()を使用して新しい配列を返し、配列の各要素が元の配列の対応する要素の正方形であるとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
</span><span><span class="hljs-variable">$squaredNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$number</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$number</span></span><span>;
}, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squaredNumbers</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>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">9</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">16</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">25</span></span><span>
)
</span></span>
この例では、匿名関数で各数値を四角化し、 array_map()を使用して新しい配列を返します。
array_map()は、匿名関数を使用するだけでなく、PHPに組み込まれた関数も使用できます。たとえば、 SQRT()関数を使用して、各数字の平方根を計算できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">9</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>, </span><span><span class="hljs-number">25</span></span><span>];
</span><span><span class="hljs-variable">$squareRoots</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'sqrt'</span></span><span>, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squareRoots</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>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>
この例では、 SQRT関数を直接渡し、 Array_map()はArrayの各要素の関数を自動的に呼び出します。
array_map()は、複数の配列を同時に処理することもサポートします。この場合、コールバック関数は各配列から対応する要素を受信します。たとえば、2セットの数字を保存する2つの配列があり、これらの数字を追加するとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>];
</span><span><span class="hljs-variable">$sumArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$a</span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span> + </span><span><span class="hljs-variable">$b</span></span><span>;
}, </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$sumArray</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>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">7</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">9</span></span><span>
)
</span></span>
この例では、2つの配列をarray_map()に渡します。これにより、要素が要素が追加され、新しい配列が返されます。
array_map()が元の配列のキー名を失うことに注意する必要があります。キー名を保持したい場合は、 array_keys()と組み合わせてarray_map ()の返された結果を使用したり、キー名を手動で保持したりできます。ただし、 array_map()自体は、元の配列のキー名を保持しません。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>];
</span><span><span class="hljs-variable">$squaredNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$number</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$number</span></span><span>;
}, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squaredNumbers</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>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">100</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">400</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">900</span></span><span>
)
</span></span>
上記のように、キー名はインデックス配列フォームにリセットされています。キー名を保存する場合は、 array_map()とその他の配列操作関数を組み合わせることを検討できます。
array_map()は、配列の各要素を変換する効率的な配列操作関数です。
有効なコールバック関数(匿名または組み込み関数)を渡して、配列内の要素を処理できます。
array_map()を使用すると、複数の配列を同時に処理でき、コールバック関数は各配列の対応する位置に要素を取得します。
この関数は元の配列のキー名を保持しないため、追加の操作が必要な場合に他の機能支援を検討できます。
array_map()をマスターすることにより、配列を処理するときにコードのシンプルさと読みやすさを向上させることができ、非常に一般的で強力なツールです。
関連タグ:
array_map