Ich möchte den Schlüssel der ersten Ebene eines mehrdimensionalen Arrays basierend auf dem Wert einer der Unterebenen zurückgeben.Return-Taste des Array der obersten Ebene, wenn ein bestimmter Wert in der Unterebene des mehrdimensionalen Arrays enthalten ist
Zum Beispiel, wenn ich '@ google.com' als 'Admin E-Mails' zur Verfügung stelle, möchte ich 'Google' zurückgeben.
Mein Array ist unten.
$array = array (
'Google' => array (
'Allowed Emails' => array ('@google.com','@gmail.com'),
'Admin Emails' => '[email protected], [email protected]', // This really is supposed to be a String, not an array
'Company Name' => 'Alphabet',
'Memberships' => array ('websites', 'google'),
),
'Facebook' => array (
'Allowed Emails' => array ('@facebook.com','@facebook.co.uk'),
'Admin Emails' => '[email protected], [email protected]',
'Company Name' => 'Facebook Limited',
'Memberships' => array ('websites', 'facebook'),
),
'Apple' => array (
'Allowed Emails' => array ('@apple.com','@icloud.com'),
'Admin Emails' => '[email protected]',
'Company Name' => 'Apple Inc',
'Memberships' => array ('computers', 'apple'),
),
'Dell2' => array (
'Allowed Emails' => array ('@dell.com'),
'Admin Emails' => '[email protected]',
'Company Name' => 'Dell Computers',
'Memberships' => array ('computers', 'dell'),
)
);
Ich habe es geschafft, einen langen Weg, um mit array_filter aber die unten funktioniert nur, wenn die Variable I (in diesem Fall ‚google.com‘) festgelegt haben, in dem Array die erste Variable ist.
Alle Gedanken sehr geschätzt.
function setitem ($item){ return $item['Allowed Emails'][0] === '@google.com' ;}
$filteredarray = array_filter($array, setitem);
$toplevelarray = array_keys($filteredarray);
echo $toplevelarray[0];
Auch ich brauche etwas Hilfe die Variable vorbei (in diesem Fall ‚@ google.com‘ in die ‚SetItem‘ -Funktion, da dies nicht schwer in codiert werden. Aus irgendeinem Grund habe ich einen Fehler, wenn ich versuche, und tun es die normale Art und Weise
Vielen Dank im Voraus
Das ist großartig. Danke Casimir. –
Wenn ich alle 'Zugelassenen E-Mails' in ein neues Array zusammenführen möchte (im Wesentlichen, was das Folgende drucken würde), gibt es eine einfache Möglichkeit, dies zu tun? 'foreach ($ array als $ k => $ v) { print_r ($ v ['Erlaubte E-Mails']); } ' –
Dies scheint zu funktionieren, um meine zweite Abfrage zu lösen - ist das eine elegante Lösung? Danke '$ result = []; foreach ($ array als $ k => $ v) { $ result [] = $ v ['Erlaubte E-Mails']; } $ ergebnis = array_reduce ($ result, 'array_merge', array()); print_r ($ result); ' –