現在の位置: ホーム> 最新記事一覧> デフォルトのコールバックをサポートするarray_fill_advanced()関数を書き込みます

デフォルトのコールバックをサポートするarray_fill_advanced()関数を書き込みます

M66 2025-06-05

PHPでは、Native Array_Fill()関数を使用して、固定値で指定されたキー範囲をArrayのキー範囲に入力できます。これは、構文が単純で非常に効率的です。

 $filled = array_fill(0, 5, 'default');
// 結果: ['default', 'default', 'default', 'default', 'default']

ただし、充填値を固定せずに、何らかのロジックによって動的に生成される場合があります。たとえば、現在のキーに基づいて生成された増分数値、uuid、乱数、またはカスタム構造を入力します。

より柔軟な要件を実現するために、 array_fill()関数: array_fill_advanced()の拡張バージョンを設計できます。この関数を使用すると、「デフォルト値コールバック関数」を渡して、キー名に基づいて対応する値を動的に生成できます。

関数設計目的

  • 任意の長さの充填配列をサポートします

  • 開始インデックスはカスタマイズできます(整数または文字列にすることができます)

  • 値は、コールバック関数によって固定または生成できます。

  • コールバック関数は、現在のキーインデックスをパラメーターとして受け入れます

関数実装

以下は、array_fill_advanced()の実装です。

 /**
 * アレイを動的に埋めます
 *
 * @param int|string $startIndex キー名を開始します
 * @param int $count 塗りつぶし数
 * @param mixed $valueOrCallback 固定値またはコールバック関数
 * @return array
 */
function array_fill_advanced($startIndex, int $count, $valueOrCallback): array {
    $result = [];

    // 開始インデックスが整数であるかどうかを判断します
    $isNumericIndex = is_int($startIndex);

    for ($i = 0; $i < $count; $i++) {
        $key = $isNumericIndex ? $startIndex + $i : $startIndex . $i;

        if (is_callable($valueOrCallback)) {
            $result[$key] = call_user_func($valueOrCallback, $key);
        } else {
            $result[$key] = $valueOrCallback;
        }
    }

    return $result;
}

使用の例

例1:固定値で埋めます

$data = array_fill_advanced(1, 3, 'hello');
// 結果: [1 => 'hello', 2 => 'hello', 3 => 'hello']

例2:ランダム文字列を動的に生成します

$data = array_fill_advanced(0, 5, function($index) {
    return bin2hex(random_bytes(4));
});
// 結果: [0 => '9f3a4b2c', 1 => 'fa92be77', ...]

例3:文字列をキープレフィックスとして使用します

$data = array_fill_advanced('item_', 3, function($key) {
    return strtoupper($key);
});
// 結果: ['item_0' => 'ITEM_0', 'item_1' => 'ITEM_1', ...]

例4:オブジェクトまたはデータ構造を入力します

$data = array_fill_advanced(0, 3, function($index) {
    return [
        'id' => $index,
        'url' => "https://m66.net/resource/{$index}"
    ];
});
/*
結果:
[
    0 => ['id' => 0, 'url' => 'https://m66.net/resource/0'],
    1 => ['id' => 1, 'url' => 'https://m66.net/resource/1'],
    ...
]
*/

まとめ

array_fill_advanced()は、 PHP開発者に、より一般的で、より強力で、より柔軟なアレイ充填方法を提供します。コールバック関数を導入することにより、重複コードを削減するだけでなく、キー値ロジックに基づいて動的なコンテンツ構造を実装できます。

これは、バッチの初期化データの処理、テストサンプルの構築、シミュレートされたAPIデータの生成などのシナリオで非常に便利です。匿名関数と柔軟なキーネーム戦略を組み合わせて、 array_fill_advanced()はツールボックスで非常に実用的なガジェットになります。