Türchen 2: Unsere Top 7 PHP Array-Funktionen

Jede PHP-Entwickler kennt Array-Funktionen. Im Alltag benutzt man manchmal noch umständlich irgendwelche Schleifen, die auch mehrfach geschachtelt sein können. Gerader hier kommen die Array-Funktionen ins Spiel. Diese machen den Code um einiges kürzer und manchmal sogar nur einen Einzeiler draus. In diesem Türchen geht es um unsere Top 7 PHP Array-Funktionen anhand eines Beispiel-Anwendungsfalls.

Beispiel-Daten für Mitarbeiter:

$employees = [
  [
    'name' => 'Max Mustermann',
    'email' => 'max@mustermann-gmbh.de'
  ],
  [
    'name' => 'Erika Mustermann',
    'email' => 'erika@mustermann-gmbh.de'
  ],
  [
    'name' => 'Laura Beispiel',
    'email' => 'laura@mustermann-gmbh.de'
  ],
  [
    'name' => 'Max Platzhalter',
    'email' => 'max@mustermann-gmbh.de'
  ]
];

array_column – alle E-Mails erhalten

// Alle Mitarbeiter E-Mail Adressen erhalten
array_column($employees, 'email');

Ergebnis:
array(4) {
  [0] => string(22) "max@mustermann-gmbh.de"
  [1] => string(24) "erika@mustermann-gmbh.de"
  [2] => string(24) "laura@mustermann-gmbh.de"
  [3] => string(22) "max@mustermann-gmbh.de"
}

array_column, array_diff_assoc, array_unique

// Alle doppelten E-Mail Adressen erhalten
$doubles = array_diff_assoc(
  array_column($employees, 'email'),
  array_unique(
    array_column($employees, 'email')
  )
);

// Ergebnis:
array(1) {
  [3] => string(22) "max@mustermann-gmbh.de"
}

array_walk, in_array – Fehler Kennzeichen zuweisen

/**
 Mitarbeiter, die eine doppelte Adresse haben,
 bekommen ein Fehler Kennzeichen
*/
array_walk(
  $employees,
  function (&$employee) use ($doubles) {
    $employee['error'] =
      in_array(
        $employee['email'],
        $doubles
      );
});

// Auszug des Ergebnisses:
array(4) {
  [0] => array(3) {
    ["name"] =>
    string(14) "Max Mustermann"
    ["email"] =>
    string(22) "max@mustermann-gmbh.de"
    ["error"] =>
    bool(true)
  }
  [1] => ...

array_filter – Fehlerhafte Daten erhalten

// Mitarbeiter, die fehlerhaft sind erhalten
$errEmployees = array_filter(
  $employees,
  function ($employee) {
    return $employee['error'];
  }
);

// Auszug des Ergebnisses:
array(4) {
  [0] => array(3) {
    ["name"] =>
    string(14) "Max Mustermann"
    ["email"] =>
    string(22) "max@mustermann-gmbh.de"
    ["error"] =>
    bool(true)
  }
  [3] => ...

array_map – Neue E-Mail Adressen zuweisen

/**
  Es wird eine Mitarbeiterliste erstellt,
  in der die Mitarbeiter mit doppelten Adressen
  eine neue bekommen, die auf ihrem
  Namen basiert
*/
$cleaned = array_map(function ($employee) {
  if ($employee['error']) {
    $employee['email'] = strtolower(
      str_replace(
        ' ',
        '.',
        $employee['name']
      ) . '@mustermann-gmbh.de'
    );
  }

  return $employee;
}, $employees);

// Auszug des Ergebnisses:
array(4) {
  [0] => array(3) {
    ["name"] =>
    string(14) "Max Mustermann"
    ["email"] =>
    string(22) "max.mustermann@mustermann[...]"
    ["error"] =>
    bool(true)
  }
  [3] => ...
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert