The number of number lines?

I have an array that looks like

Array
(
    [1] => Array
        (
            [0] => Date
            [1] => Action
        )

    [2] => Array
        (
            [0] => 2011-01-22 11:23:19
            [1] => SHARE_TWEET
        )

    [3] => Array
        (
            [0] => 2011-01-22 11:23:19
            [1] => SHARE_FACEBOOK
        )

and many other values ​​(about 10), I want to count the number of rows in an array. I was going to use array_count_values, but it does not account for multidimensional arrays.

Any other options?

+3
source share
4 answers

This can be done by first smoothing the array and then using array_count_values():

For flattening, here is a trick:

$array = call_user_func_array('array_merge', $arrays);

And then:

$counts = array_count_values($array);

Conclusion:

array (
  'Date' => 1,
  'Action' => 1,
  '2011-01-22 11:23:19' => 2,
  'SHARE_TWEET' => 1,
  'SHARE_FACEBOOK' => 1,
)

Full code:

$array = call_user_func_array('array_merge', $arrays);
var_export(array_count_values($array));
+5
source

, , PHP, , . , , . PHP , array_walk_recursive. PHP5, , create_function ( , PHP afik)

$strings = array();
array_walk_recursive($arr, function($value, $key) use (&$strings) { 
    $strings[$value] = isset($strings[$value]) ? $strings[$value]+1 : 1; 
});   

, , , if.

:

print_r($strings);
Array
(
    [Date] => 1,
    [Action] => 1,
    [2011-01-22 11:23:19] => 2,
    [SHARE_TWEET] => 1,
    [SHARE_FACEBOOK] => 1,
)
+1

Pseudo code

$inputArray = // your array as in the example above

foreach ($inputArray as $key => $value) {
  $result[$value[1]] = $result[$value[1]] + 1;
}

var_dump($result);
0
source

Here's how to do it:

$arr = Array (
    1 => Array (
            0 => 'Date',
            1 => 'Action'
    ),
    2 => Array (
            0 => '2011-01-22 11:23:19',
            1 => 'SHARE_TWEET'
    ),
    3 => Array (
            0 => '2011-01-22 11:23:19',
            1 => 'SHARE_FACEBOOK'
    )
);

$result = array();
function count_array($arr) {
global $result;
    foreach($arr as $k => $v) {
        if (is_array($v)) {
            count_array($v);
        } else {
            if (isset($result[$v])) {
              $result[$v]++;
            } else {
              $result[$v] = 1;
            }
        }
    }
}
count_array($arr);
print_r($result);

output:

Array
(
    [Date] => 1
    [Action] => 1
    [2011-01-22 11:23:19] => 2
    [SHARE_TWEET] => 1
    [SHARE_FACEBOOK] => 1
)
0
source

Source: https://habr.com/ru/post/1788516/


All Articles