Ich habe ein Array, das wie folgt aussieht:Der einfachste Weg, um Keys aus einem 2D-Array zu entfernen?
array(
0 => array(
'key1' => 'a',
'key2' => 'b',
'key3' => 'c'
),
1 => array(
'key1' => 'c',
'key2' => 'b',
'key3' => 'a'
),
...
)
Ich brauche eine Funktion zu bekommen ein Array mit nur eine (variable) Anzahl der Tasten, das heißt reduce_array (array ('key1', 'key3')) ; sollte zurück:
array(
0 => array(
'key1' => 'a',
'key3' => 'c'
),
1 => array(
'key1' => 'c',
'key3' => 'a'
),
...
)
Was ist der einfachste Weg, dies zu tun? Wenn möglich ohne zusätzliche Hilfsfunktionen wie array_filter oder array_map, da sich meine Mitarbeiter bereits über zu viele Funktionen beschweren.
Das Quell-Array hat immer die angegebenen Schlüssel, so dass es nicht erforderlich ist, die Existenz zu überprüfen.
Bonuspunkte, wenn die Werte eindeutig sind (die Schlüssel stehen immer zueinander in Beziehung, dh wenn Schlüssel1 den Wert a hat, haben die anderen Schlüssel immer den Wert b).
Meine aktuelle Lösung, die aber funktioniert, ist ziemlich ungeschickt (auch der Name schrecklich ist, aber keine besseren finden):
function get_unique_values_from_array_by_keys(array $array, array $keys)
{
$result = array();
$found = array();
if (count($keys) > 0)
{
foreach ($array as $item)
{
if (in_array($item[$keys[0]], $found)) continue;
array_push($found, $item[$keys[0]]);
$result_item = array();
foreach ($keys as $key)
{
$result_item[$key] = $item[$key];
}
array_push($result, $result_item);
}
}
return $result;
}
Zusatz:
PHP Version ist 5.1.6.
sehr schön, @jemfinch. – karim79
Sehr gute Lösung, scheint genau das zu sein, was ich brauchte, aber ich werde auf andere mögliche Lösungen warten, bevor ich akzeptiere. – dbemerlin