PHP Kombination von zwei multi-dimensional arrays
Ich versuche, mit array_combine kombinieren Sie zwei multi-dimensionale arrays, aber irgendwie machen es nicht richtig.
Hier ist array1:
Array(
[Nov 18, 2011] => Array(
[C] => 107705.5792
[I] => 44561.52
)
[Nov 22, 2011] => Array(
[C] => -8992.8352
)
)
und hier ist array2:
Array(
[Nov 18, 2011] => Array(
[C] => 3
[I] => 1
)
[Nov 22, 2011] => Array(
[C] => 2
)
)
Hier ist mein Versuch an array_combine, die nicht arbeiten:
$array1 = ($arr1);
$array2 = ($arr2);
$result = array_combine($arr1, $arr2);
echo '<pre>';
print_r($result);
echo '</pre>';
Was mache ich falsch? Dies ist das Ergebnis, das ich Suche:
Array(
[Nov 18, 2011] => Array(
[3] => 107705.5792
[1] => 44561.52
)
[Nov 22, 2011] => Array(
[2] => -8992.8352
)
)
Vielen Dank für Ihre Hilfe.
- BEARBEITEN -
Habe ich festgestellt, dass wenn ich stattdessen verwenden array_merge_recursive, das ist mein Ergebnis ich bekomme. Nicht das, was ich gesucht hatte, aber in der Nähe:
Array(
[Nov 18, 2011] => Array(
[C] => Array(
[0] => 3
[1] => 107705.5792
)
[I] => Array(
[0] => 1
[1] => 44561.52
)
)
[Nov 22, 2011] => Array(
[C] => Array(
[0] => 2
[1] => -8992.8352
)
)
)
- WEITER BEARBEITEN -
Hier ist der Weg, dass ich versucht habe zu implementieren Sie eine der unten aufgeführten Vorschläge, aber dieser ist nicht für mich arbeiten. Was ist falsch?:
function cust_array_merge(array &$array1, array $array2){
//loop through main array
foreach ($array1 as $key => $val) {
//check if $array2 has the same index
if (array_key_exists($key, $array2)) {
//reset $array1's indexes to $array2's values
foreach ($array2[$key] as $subKey => $subVal) {
if (array_key_exists($subKey, $array1[$key])) {
$tempVal = $array1[$key][$subKey];
unset($array1[$key][$subKey]);
$array1[$key][$subVal] = $tempVal;}}}}}
$merged = cust_array_merge($arr_cats_per_bill_date, $arr_cvat);
echo '<pre>';
print_r($merged);
echo '</pre>';
- Sind Sie wollen, um wichtige Referenzen oder machen Sie sich nicht sorgen, wenn es zu 0 1 2? Sie können nicht zwei Tasten "C" oder "I" oder jeder andere Wert im array.
- Warum tun sich buchstäblich ALLE Ihre Fragen haben den exakt gleichen Inhalt und arrays? Machen wir deine Hausaufgaben machen oder etwas für die Schule? Dies ist buchstäblich die Dritte oder vierte Frage von dir, die ich gesehen habe in der letzten Woche oder zwei, das ist fast genau die gleiche wie die Vorherige..
- Nein, ich nicht wollen, halten Sie die Taste Referenzen.
- meine Fragen haben den gleichen Inhalt und arrays, da bin ich immer noch versuchen, herauszufinden, die gleiche Tatsache-situation. Diese nicht Hausaufgaben für die Schule. Ich versuche einfach nur, um zu erfahren, wie die Arbeit mit mehrdimensionalen arrays richtig.
- Gotcha. Nur damit, dass es nicht falsch in keiner Weise lol. Danke für die Aufklärung!
- Es ist ein bisschen ungewöhnlich, numerischen Tasten in einem array, die nicht in Ordnung sind. Sind Sie sicher, dies ist die beste Daten-Struktur, die Sie brauchen, um Ihre problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
array_merge_recursive
bekommt man sehr nahe (Ihre "Schlüssel" ist im index 1 der Blatt-arrays, und Ihr Wert in index 0). Also Mach es in zwei Schritten: zuerst erhalten die zusammengeführte array, dann tüfteln mit den Zweigen, um es richtig zu machen.Nur so zum Spaß, hier sind noch zwei weitere Ansätze. Diese beiden sind ein bisschen langsamer als
merge_flatten_branches
, sondern veranschaulichen einige nützliche array-Konzepte. (In anderen eher funktional-bezogene Sprachen als php, könnten diese bevorzugt werden.)flatten_leaf
Zeug ist eher esoterisch. Kryptische Funktionsnamen...nicht cool. Wenn dies war eine kluge, noch bedeutungslos, Funktion name Wettbewerbmerge_flatten_branches_reduce
gewinnen würden, mit Bravour, lol. Trotzdem, +1 für eine funktionierende Lösung.Dem Ergebnis, das Sie suchen, sieht wirklich Brauch mich. Das heißt, ich weiß nicht, built-in PHP-array-Funktionen, die tun würde , dass. Aber geschrieben habe ich eine benutzerdefinierte Funktion für Sie. Warnung: es ist sehr speziell für diesen Anlass und damit wahrscheinlich nicht sehr wiederverwendbare.
cust_array_merge
Funktion nicht wirklich etwas zurückzugeben. Das erste argument akzeptiert ($array1
) ist mit reference (daher die&
).