2015-05-15 9 views
6

Erste Buchung auf stackoverflow.Zählen, Markieren und Drucken der Duplikate zwischen zwei Arrays

Nach dem Drucken der Haupt-Array, habe ich es geschafft, die Werte zu markieren, die in der zweiten gefunden werden, aber ich möchte auch die Anzahl drucken, wie das Duplikat in Klammern gleichzeitig auftritt. Ich habe keine Ideen mehr, wie ich diesen letzten Teil machen kann, ich stecke in mehreren Schleifen und anderen Problemen fest. Ich werde hier einfügen, was für jetzt funktioniert.

der Code:

$main = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
       12, 13, 14, 15, 16, 17, 18, 19, 20); 

$secondary = array(1, 6, 10, 6, 17, 6, 17, 20); 

foreach ($main as $number) 

{ 

if (in_array($number, $secondary)) 

{ 

echo $item; 

// this one is supposed to be highlighted, but the html code disappears on stackoverflow 

/* this is where the number of duplicates should appear in bracket, example: 

highlighted number(number of duplicates) */ 

} 

else 

{ 

echo $item; 

// this one is simple 

} 
} 

Erwartetes Ergebnis:

1 (1), 2, 3, 4, 5, 6 (3), 7, 8, 9, 10 (1), 11, 12, 13, 14, 15, 16, 17 (2), 18, 19, 20 (1)

Grundsätzlich enthalten die Klammern die Anzahl, wie oft der Wert im zweiten Array gefunden wird farbig, aber ich kann den HTML-Code aus irgendeinem Grund nicht einfügen. Entschuldigung dafür, dass das erwartete Ergebnis nicht klarer wird!

PROBLEM Gelöst: Vielen Dank an alle für Ihre Hilfe, das erste Mal mit dieser Website, nicht so eine schnelle Antwort von euch erwarten. Vielen Dank !

+1

können Sie bitte Ihr erwartetes Ergebnis veröffentlichen .. –

Antwort

2

Sie müssen die Zählwerte Ihrer secondary Array erhalten erste array_count_values verwenden. Dies ist, was Sie als

$main = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20); 

$secondary = array(1, 6, 10, 6, 17, 6, 17, 20); 
$count_values = array_count_values($secondary); 

foreach ($main as $key => $value) { 
    if (in_array($value, $secondary)) { 
     echo $value . "<strong>(" . $count_values[$value] . ")</strong>"; 
     echo (++$key == count($main)) ? '' : ','; 
    } else { 
     echo $value; 
     echo (++$key == count($main)) ? '' : ','; 
    } 
} 

Ausgabe erwerben können:

1 (1), 2,3,4,5,6 (3), 7,8,9,10 (1), 11 , 12,13,14,15,16,17 (2), 18,19,20 (1)

+0

Vielen Dank für Ihre Antwort. Es hat mein Problem behoben. –

+0

@LostinCode Gut zu helfen ... –

0

$ Sekundär Unter der Annahme, der mit den Duplikaten, man darüber den anderen Weg gehen sollte:

$dupes = array(); 
foreach($secondary as $number) { 
    if (in_array($number, $main)) { 
     $dupes[$number]++; 
    } 
} 
var_dump($dupes); 
+0

diese ist nicht was ich suche, aber danke für deine Hilfe. Ich werde meinen ursprünglichen Beitrag mit einem erwarteten Ergebnis bearbeiten. –

0
<?php 
    $main = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, 14, 15, 16, 17,18,19,20); 
    $secondary = array(1, 6, 10, 6, 17, 6, 17, 20); 
    $result =array(); 
    foreach($main as $key => $value){ 
     $i=0; 
     foreach($secondary as $key1 => $value1){ 
      if($value == $value1){ 
       $i++; 
      } 
      $result[$value] = $i; 
     } 
    } 
    $resultString =''; 
    foreach($result as $key => $value){ 
    $resultString .=$key.'('.$value.'),' ; 
    } 
    echo trim($resultString,','); 
    ?> 

Ergebnis:

1(1),2(0),3(0),4(0),5(0),6(3),7(0),8(0),9(0),10(1),11(0),12(0),13(0),14(0),15(0),16(0),17(2),18(0),19(0),20(1) 
Verwandte Themen