PHP Zwei Arrays - doppelte Werte überschreiben
am 20.05.2011 - 16:36 Uhr in
ich habe ein PHP problem ... ich generiere ein PDF ... dort sind benutzerlisten dargestellt. Ich habe nun zwei Arraylisten dort möchte ich gern die doppelten einträge raus hauen löschen aus einem Array, ich hab glaub ich auch die richtige Funktion gefunden "array_intersect_assoc". Aber ich mach da glaub ich noch was falsch ^^ kann mir wer sagen wie ich das mache damit ich aus den zwei arrays ein array habe und die doppelten einträge gelöscht sind ?
gruß Hacky
<?php
foreach($node->field_zweitnachweiss_einsatz as $field_zweitnachweiss_einsatz) {
$string = filterHTML($field_zweitnachweiss_einsatz['view']);
$pdf->textlist( utf8_decode($count1 .'. '.$string), $Fposx1, $Fposy1, 45);
$pdf->SetDrawColor(252, 118, 53);
$pdf->Rect($Fposx1 + 46, $Fposy1 - 6, 17, 5, 'FD');
$Fposy1 = $Fposy1 + 5;
$count1 = $count1 + 1;
}
foreach($node->field_anwesenheit as $field_anwesenheit) {
$string = filterHTML($field_anwesenheit['view']);
$pdf->textlist( utf8_decode($count1 .'. '.$string), $Fposx1, $Fposy1, 45);
$pdf->SetDrawColor(252, 118, 53);
$pdf->Rect($Fposx1 + 46, $Fposy1 - 6, 17, 5, 'FD');
$Fposy1 = $Fposy1 + 5;
$count1 = $count1 + 1;
}
$result_array = array_intersect_assoc($field_anwesenheit, $field_zweitnachweiss_einsatz);
foreach($result_array as $poll) {
$pdf->textlist( $poll, $Fposx1, $Fposy1, 45);
$pdf->texfield("Leitstellen-Nr.", $poll , 108, 34, 52);
}
?>- Anmelden oder Registrieren um Kommentare zu schreiben

Ich glaube nicht, dass dir
am 20.05.2011 - 17:17 Uhr
Ich glaube nicht, dass dir array_intersect_assoc was bringt, das liefert dir schließlich die Schnittmenge der beiden Arrays, gibt dir also alle Elemente zurück, die in beiden Arrays vorhanden sind. Und das ja nicht gerade das, was du willst, wenn ich dich richtig verstanden habe.
Vielleicht solltest du es lieber mal mit array_diff probieren. Oder du machst es selber - du gehst per Schleife durch Array A, prüfst dann, ob der Wert jeweils in Array B enthalten ist und wenn nicht, trägst du ihn dort ein. Oder aber du kopierst zuerst Array B.
Beispiel:
<?php
$result_array = $field_anwesenheit;
foreach($field_zweitnachweiss_einsatz as $key => $value)
{
if(!in_array($value, $result_array))
{
$result_array[] = $value;
}
}
foreach($result_array as $poll)
{
$pdf->textlist( $poll, $Fposx1, $Fposy1, 45);
$pdf->texfield("Leitstellen-Nr.", $poll , 108, 34, 52);
}
?>
hmm das Besipeil von dir
am 21.05.2011 - 13:49 Uhr
hmm das Besipeil von dir funktioniert leider nicht so wie ich das dachte.
Arraydiff zeigt mir keinen output :/ ich habe gemacht:
array1:
Hans
Peter
Olaf
array2:
Hans
Peter
Olaf
Max
<?php
$array1[] = $node->field_anwesenheit;
$array2[] = $node->field_zweitnachweiss_einsatz;
$newArrayList[] = array_diff($array1,$array2);
?>
ergebniss:
nichts.
eigentlich sollte stehen:
Max
hm okay nun hab ich es hin
am 21.05.2011 - 14:41 Uhr
hm okay nun hab ich es hin bekommen, ich hab $node->field_anwesenheit; und $node->field_zweitnachweiss_einsatz; in zwei arrays geschrieben und dann array_diff gemacht.

Nun hab ich ein Array mit:
Aber der inhalt des Array lässt sich nicht ausgeben :(
<?php
.
.
.
$newArrayList[] = array_diff($array3,$array4);
foreach($newArrayList as $output){
print $output['view'];
print "--";
}
?>
Und was genau hat an meinem
am 21.05.2011 - 16:38 Uhr
Und was genau hat an meinem Vorschlag nicht geklappt?
Ohne zu wissen, wie "$newArrayList" aufgebaut ist, kann man dir auch nicht sagen, wo der Fehler liegt.
Zeigt der Screenshot oben den Aufbau von "newArrayList? Wenn dem so sein sollte, würde ich mir Gedanken darum machen, ob denn der Schlüssel "view" an irgendeiner Stelle auftaucht. Oben im Scrennshot erscheint er schonmal nicht.
Du könntest Dich mit
am 21.05.2011 - 22:30 Uhr
Du könntest Dich mit folgenden PHP-Befehlen für Arrays befassen:
Array_Merge
Array_Unique
Allgemeine Array-Befehle für PHP