Jak możemy znaleźć liczbę duplikatów elementów w multidimensional array,

Mam taką tablicę:

Array 
      ( 
          [0] => Array 
              ( 
                  [brti] => 29 
              ) 
          [1] => Array 
              ( 
                  [voda] => 6 
              ) 
          [2] => Array 
              ( 
                  [btel] => 8 
              ) 
          [3] => Array 
              ( 
                  [btel] => 10 
              ) 
      )

Pytanie: Jak uprościć strukturę tablicy, to znaczy, że może liczyć wartość, jeśli istnieje, że ma ten sam klucz?

tak, jak:

Array 
  ( 
      [0] => Array 
          ( 
              [brti] => 29 
          ) 
      [1] => Array 
          ( 
              [voda] => 6 
          ) 
      [2] => Array 
          ( 
              [btel] => 18 
          ) 
  )

Do tej pory próbowałem w ten sposób, ale nie pomógł mi . My array is store in $test

    $test = [sample array]

    $count = array();
    foreach ($test as $key => $value) {
        foreach ($value as $k => $val) {
            if (isset($count[$val])) {
                ++$count[$val];
            } else {
                $count[$value] = 1;
            }
        }
    }
    print_r($count);
0
tonjel 20 luty 2019, 12:49

2 odpowiedzi

Najlepsza odpowiedź

Możesz to zrobić w bardzo prosty sposób,

$test = [];
foreach ($array as $value)
{
    foreach ($value as $k => $v)
    {
        // $test[$k] = ($test[$k] ?? 0); // initialised if not php 7+
        $test[$k] = (empty($test[$k]) ? 0: $test[$k]); //  below php 7 
        $test[$k] += $v;
    }
}

print_r($test);

Wynik:

Array
(
    [brti] => 29
    [voda] => 6
    [btel] => 18
)

Działanie Demo.

0
Rahul 20 luty 2019, 10:05
<?php

$array = [
    "0" => ["brti" => 29],
    "1" => ["voda" => 6],
    "2" => ["btel" => 8],
    "3" => ["btel" => 10],
];
$final = array();

array_walk_recursive($array, function($item, $key) use (&$final){
    $final[$key] = isset($final[$key]) ?  $item + $final[$key] : $item;
});
print_r($final);

    });

sprawdź demo

1
Sayed Mohd Ali 20 luty 2019, 10:49