Ich möchte zwei Arrays mit Schlüsseln in PHP zusammenführen. Wenn kein Schlüssel für ein Array definiert ist, sollte er den Wert mit Null füllen. Ich wollte Lösung wieVerschmelzen zwei Arrays unterschiedlicher Länge mit Schlüssel und 0 füllen auf leer
array_merge_recursive($a1, $a2)
Aber es produziert nicht die erforderliche Ausgabe. Ich habe folgendes codiert. Es funktioniert, aber ich möchte wissen, ob es andere gute und effiziente Lösungen wie array_merge_recursive()
gibt;
function array_combine_zero_fill($a1,$a2){
$a3=array();
foreach($a1 as $k=>$v){
$a3[$k]['doc1']=$v;
$a3[$k]['doc2']=array_key_exists($k, $a2) ? $a2[$k]:0;
}
foreach($a2 as $k=>$v){
$a3[$k]['doc1']=array_key_exists($k, $a2) ? $a3[$k]['doc1']:0;
$a3[$k]['doc2']=$v;
}
return $a3;
}
Die Array-Struktur wie ist
folgende$a1 = array(
"apple"=>4,
"banana"=>2,
"mango"=>10,
"guava"=>1,
"cherry"=>3,
"grapes"=>7
);
$a2 = array(
"pista"=>77,
"cashew"=>65,
"almond"=>23,
"guava"=>34,
"cherry"=>54,
"grapes"=>48
);
Das gewünschte Ergebnis wie dieses
aussehen sollte, ista3 = Array(
[apple] => Array([doc1] => 4, [doc2] => 0),
[banana] => Array([doc1] => 2, [doc2] => 0),
[mango] => Array([doc1] => 10, [doc2] => 0),
[guava] => Array([doc1] => 1, [doc2] => 34),
[cherry] => Array([doc1] => 3, [doc2] => 54),
[grapes] => Array([doc1] => 7, [doc2] => 48),
[pista] => Array([doc1] => 0, [doc2] => 77),
[cashew] => Array([doc1] => 0, [doc2] => 65),
[almond] => Array([doc1] => 0, [doc2] => 23)
);
Post die Array-Struktur zusammen mit dem erwarteten Ausgang –
ich die Frage mit der Array-Struktur und Ausgabestruktur aktualisiert haben. – Prabhu
@Prabhu warum schwirren Sie sogar Array 1, wenn alles, was Sie tun, einen Schlüssel, der in beiden für Array 1 ist, auf 0 setzt. Nehmen Sie zum Beispiel Trauben in der ersten Schleife die Werte auf 7 und 48, aber in Schleife zwei Sie überschreiben sie auf 0 und 48 ... Das ist sinnlos. – Styphon