Array kürzen - nur die keys mit den Namen aus Array 2 lassen
bleicher
- php
1 Tom0 bleicher
0 ChrisB1 Andreas Görtz0 bleicher
Grüße,
ich fand, oder erkannte nciht eine PHP-funktion die es mir erlauben würde, aus einem array alles keys zu löschen, die nicht als werte im Array 2 gespeichert sind. momentan löse ich das mit paar schleifen - geht das auch besser? array_intersect überprfüft ja die werte - zweifaches austauschen von keys/werten ist nicht die lösung, oder?
MFG
bleicher
Hello,
dafür benötigst Du genau eine foreach-Schleife und ein isset() in der Schleife mit anschließender Zuweisung.
$_values = array();
# ... füllen
$_keys = array();
# ... füllen
$_result = array();
foreach ($_keys as $key)
{
if(isset($_values[$key]))
{
$_result[$key] = $_values[$key];
}
}
Liebe Grüße aus Syburg
Tom vom Berg
Grüße,
dafür benötigst Du genau eine foreach-Schleife und ein isset() in der Schleife mit anschließender Zuweisung.
$_values = array();
# ... füllen
$_keys = array();
# ... füllen$_result = array();
foreach ($_keys as $key)
{
if(isset($_values[$key]))
{
$_result[$key] = $_values[$key];
}
}
das habe ich sogar ;) die zweite schleife kürzt den "$_keys" - damit auch wirklich nur "kleinstes gemeinsames" bleibt.
also anders gehts nicht - ok, danke.
MFG
bleicher
Hi,
array_intersect überprfüft ja die werte -
Es gibt mehrere arry_intersect-Funktionen - die schon alle in Betracht gezogen?
zweifaches austauschen von keys/werten ist nicht die lösung, oder?
Vor allem erfordert es Eindeutigkeit bei den Values, sonst ist es nicht verlustfrei möglich.
MfG ChrisB
Hi,
momentan löse ich das mit paar schleifen - geht das auch besser? array_intersect überprfüft ja die werte - zweifaches austauschen von keys/werten ist nicht die lösung, oder?
wenn ich dich richtig verstehe, möglicherweise mit einer Kombination aus array_intersect_key() und array_flip():
$foo = array('a' => 1, 'b' => 2);
$bar = array('a', 'c');
$baz = array_intersect_key($foo, array_flip($bar)); // ergibt array('a' => 1)
Gruß,
Andreas.
Grüße,
$baz = array_intersect_key($foo, array_flip($bar)); // ergibt array('a' => 1)
das ist gut^^
intersect_key habe ich irgendwie übersehen ;P danke
MFG
bleicher