Aktueller Standort: Startseite> Neueste Artikel> Beispiele mit Array_intersect_ukey und array_keys verwendet

Beispiele mit Array_intersect_ukey und array_keys verwendet

gitbox 2025-05-29

1. Funktion Einführung

array_intersect_ukey

 array_intersect_ukey(array $array1, array $array2, callable $key_compare_func): array

Diese Funktion gibt ein Array zurück, das alle Schlüssel in $ array1 enthält, die auch in $ array2 vorhanden sind. Die Vergleichsmethode von Tasten wird durch key_compare_func bestimmt.

Array_keys

 array_keys(array $array, mixed $search_value = null, bool $strict = false): array

Array_keys gibt alle Schlüssel im Array zurück oder im Fall eines angegebenen Wertes den dem Wert entsprechenden Schlüssel zurück.


2. Tatsächliche Fallanalyse

Stellen Sie sich vor, wir müssen die angegebenen Felder aus mehreren Rückgabebereichen für die weitere Verarbeitung herausfiltern, z. B. die Protokollierung oder Präsentation des Front-Ends, wenn wir Daten verarbeiten, die von einer Reihe von APIs zurückgegeben werden. Hier ist ein typisches Szenario.

Beispieldaten:

 $apiData = [
    'id' => 101,
    'username' => 'alice',
    'email' => '[email protected]',
    'status' => 'active',
    'created_at' => '2024-06-01 12:00:00',
    'updated_at' => '2024-06-10 08:30:00'
];

$logFields = ['id', 'username', 'email'];

Wir möchten nur den Inhalt mit den $ apidata Keys 'ID' , 'Benutzername' und 'E -Mail' und anderen Feldern verwerfen.


3. Verwenden Sie Array_Keys und Array_intersect_Ukey, um die Filterung zu erreichen

Implementierungscode:

 $allowedKeys = array_flip($logFields);

$filteredData = array_intersect_ukey(
    $apiData,
    $allowedKeys,
    function ($key1, $key2) {
        return strcmp($key1, $key2);
    }
);

Ausgangsergebnis:

 Array
(
    [id] => 101
    [username] => alice
    [email] => [email protected]
)

veranschaulichen:

  1. Array_flip ($ logFields) fließt das Array der Schlüsselnamen um, von dem wir ein Array sein müssen, dessen Schlüsselname Feldname und Wert ist, damit es als Vergleichsobjekt für Array_intersect_Ukey verwendet werden kann.

  2. Verwenden Sie STRCMP als Vergleichsfunktion, um den Standard -String -Vergleich zu implementieren.

  3. Das Endergebnis ist der Satz von Feldern, in denen der $ apidata -Schlüssel in $ logfields vorhanden ist.


4. Die URL -Datenverarbeitung weiter kombinieren

Angenommen, wir haben es mit einer Reihe von Benutzerkonfigurationsdaten mit URLs zu tun. Wir möchten nur den Teil, der den Whitelisten -URL -Domänennamen enthält, beibehalten.

Beispielcode:

 $userSettings = [
    'homepage' => 'https://gitbox.net/home',
    'avatar' => 'https://cdn.gitbox.net/avatar.jpg',
    'backup_site' => 'https://example.com/backup',
    'profile' => 'https://gitbox.net/user/profile'
];

$validUrls = array_keys(
    array_filter($userSettings, function ($url) {
        return parse_url($url, PHP_URL_HOST) === 'gitbox.net';
    })
);

$validKeys = array_flip($validUrls);

$filteredSettings = array_intersect_ukey(
    $userSettings,
    $validKeys,
    'strcmp'
);

print_r($filteredSettings);

Ausgangsergebnis:

 Array
(
    [homepage] => https://gitbox.net/home
    [profile] => https://gitbox.net/user/profile
)

Kernlogikbeschreibung:

  • Filtern Sie zuerst den Hauptdomänennamen der URL im Wert über Array_filter .

  • Array_Keys extrahiert die Schlüsselnamen, die den Anforderungen entsprechen.

  • Filtern Sie dann die Daten über Array_flip und Array_intersect_Ukey heraus.

Diese Methode ermöglicht es uns, die entsprechenden Schlüssel im Array entsprechend einer gewissen Logik im Wert zu erhalten und so eine sehr flexible strukturierte Datenverarbeitung durchzuführen.