Aktueller Standort: Startseite> Neueste Artikel> Schreiben Sie eine array_fill_advanced () -Funktion, die Standard -Rückrufe unterstützt

Schreiben Sie eine array_fill_advanced () -Funktion, die Standard -Rückrufe unterstützt

M66 2025-06-05

In PHP kann die native arrray_fill () -Funktion verwendet werden, um den angegebenen Schlüsselbereich eines Arrays mit festen Werten zu füllen, was in der Syntax einfach und sehr effizient ist:

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

Manchmal wollen wir jedoch, dass der gefüllte Wert nicht festgelegt, sondern dynamisch durch eine Art Logik erzeugt wird. Füllen Sie beispielsweise inkrementelle numerische Werte, UUIDs, Zufallszahlen oder benutzerdefinierte Strukturen aus, die basierend auf dem aktuellen Schlüssel erzeugt werden.

Um flexiblere Anforderungen zu erfüllen, können wir eine erweiterte Version der Funktion array_fill () entwerfen: Array_Fill_advanced () . Mit dieser Funktion können Sie eine "Standardwert -Rückruffunktion" übergeben, um den entsprechenden Wert dynamisch basierend auf dem Schlüsselnamen zu generieren.

Funktionsdesignziele

  • Unterstützt das Füllen von Arrays von willkürlichen Längen

  • Der Startindex kann angepasst werden (kann ganzzahlig oder Zeichenfolge sein)

  • Der Wert kann durch eine Rückruffunktion behoben oder generiert werden.

  • Die Rückruffunktion akzeptiert den aktuellen Schlüsselindex als Parameter

Funktionsimplementierung

Im Folgenden ist die Implementierung von Array_Fill_advanced () :

 /**
 * Dynamisch ein Array füllen
 *
 * @param int|string $startIndex Tastenname starten
 * @param int $count Anzahl der Füllungen
 * @param mixed $valueOrCallback Fester Wert oder Rückruffunktion
 * @return array
 */
function array_fill_advanced($startIndex, int $count, $valueOrCallback): array {
    $result = [];

    // Stellen Sie fest, ob der Startindex eine Ganzzahl ist
    $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;
}

Beispiel für die Nutzung

Beispiel 1: Füllen Sie es mit festen Werten aus

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

Beispiel 2: Erzeugen Sie dynamisch zufällige Zeichenfolgen

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

Beispiel 3: Verwenden Sie die Zeichenfolge als Schlüsselpräfix

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

Beispiel 4: Füllen Sie eine Objekt- oder Datenstruktur aus

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

Zusammenfassung

Array_Fill_advanced () bietet PHP -Entwicklern eine allgemeinere, leistungsfähigere und flexiblere Array -Füllmethode. Durch die Einführung von Rückruffunktionen können wir nicht nur den doppelten Code reduzieren, sondern auch dynamische Inhaltskonstruktion basierend auf der Schlüsselwertlogik implementieren.

Dies ist sehr nützlich für Szenarien wie Verarbeitung von Batch -Initialisierungsdaten, Erstellung von Testproben, Generieren simulierter API -Daten usw. Die Kombination von anonymen Funktionen und flexiblen Strategien für den Schlüsselnamen kann ein sehr praktisches Gerät in Ihrer Toolbox werden.