2016-12-25 3 views
1

Ich muss die gleichen Werte im mehrdimensionalen Array zählen und die Duplikate entfernen.Zählen Sie doppelte Werte im mehrdimensionalen Array

Mein Array:

$r = [ 
    ['a','b'], 
    ['a','b'], 
    ['c','d'], 
    ['c','d'], 
    ['c','d'], 
    ['e','f'], 
]; 

Need to output:

[0] => Array 
    (
     [0] => a 
     [1] => b 
     [1] => 2 // Result 
    ) 

[1] => Array 
    (
     [0] => c 
     [1] => d 
     [1] => 3 // Result 
    ) 

[2] => Array 
    (
     [0] => e 
     [1] => f 
     [1] => 1 // Result 
    ) 

Ich werde für Ihre Hilfe sehr dankbar.

+0

habe ich versucht, aber ohne Erfolg –

+0

"* Was *" haben Sie versucht, genau? Teilen Sie den Code, den Sie bisher haben, auch wenn es nicht funktioniert. – Qirel

+0

http://StackOverflow.com/a/41275759/6521116 –

Antwort

2
<?php 
$r = [ 
    ['a','b'], 
    ['a','b'], 
    ['c','d'], 
    ['c','d'], 
    ['c','d'], 
    ['e','f'], 
]; 
foreach($r as $arr) 
{ 
    $o[implode(',', $arr)][] = 1; 
} 
$output = []; 
array_walk($o, function($v, $k) use(&$output){ 
    $output[] = array_merge(explode(',', $k), [count($v)]); 
}); 
var_dump($output); 

und die Ausgabe:

array(3) { 
    [0]=> 
    array(3) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "b" 
    [2]=> 
    int(2) 
    } 
    [1]=> 
    array(3) { 
    [0]=> 
    string(1) "c" 
    [1]=> 
    string(1) "d" 
    [2]=> 
    int(3) 
    } 
    [2]=> 
    array(3) { 
    [0]=> 
    string(1) "e" 
    [1]=> 
    string(1) "f" 
    [2]=> 
    int(1) 
    } 
} 
+0

Vielen Dank für die Antwort –

0
foreach ($result1 as $key): 
    $o[implode(', ', $key)][] = null; 
    foreach ($o as $key1) { 
     $g[implode(', ', $key)] = count($key1); 
    } 
endforeach; 
print_r($g); 
Verwandte Themen