Ich habe zwei Arrays ...PHP - Fusion Arrays
$arr1 = array(
'name',
'date' => array('default' => '2009-06-13', 'format' => 'short'),
'address',
'zipcode' => array('default' => 12345, 'hidden' => true)
);
$arr2 = array(
'name',
'language',
'date' => array('format' => 'long', 'hidden' => true),
'zipcode' => array('hidden' => false)
);
Hier ist das gewünschte Ergebnis:
$final = array(
'name',
'date' => array('default' => '2009-06-13', 'format' => 'long', 'hidden' => true),
'zipcode' => array('default' => 12345, 'hidden' => false)
);
- nur die Elemente von $ arr2 (die auch in $ arr1 existieren) sind used
- Die Attribute jedes Elements werden zusammengeführt
- Wenn ein gemeinsames Element (z. B. Postleitzahl) ein Attribut teilt (z. B. ausgeblendet), dann t er Attribut von $ arr2 hat Vorrang
Was sind einige gute Ansätze zur Lösung dieses Problems?
Vielen Dank im Voraus.
EDIT: Ich habe versucht, etwas zusammen zu humpeln ... Kritik begrüßt:
$new_array = array_intersect_key($arr2, $arr1);
foreach ($new_array as $key => $val)
{
if (is_array($arr1[$key]))
{
if (is_array($val))
{
$new_array[$key] = array_merge($val, $arr1[$key]);
}
else
{
$new_array[$key] = $arr1[$key];
}
}
}
Gute Praxis array_intersect_key in diesem Fall Code wie das als Antwort auf Ihre eigene Frage zu stellen ist. – Eric
Das Problem ist, dass die obige "Lösung" nicht funktioniert ... – Matt
Ich habe mir das angeschaut, aber ich wundere mich über eine leichte Inkonsistenz. Sie interessieren sich nur für die erste Dimension des Arrays und dann alles in der zweiten Dimension zusammenführen, überschreiben? Wird sich das jemals über zwei Dimensionen hinaus erstrecken? –