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] => ...